プレビュー版Engage Mobile SDKは、APNsとFCMのデバイストークンを登録する共通APIを提供します。アプリがプラットフォームからトークンを取得し、そのトークンをSDKへ渡すことで、Engage Studioがインストールを配信対象にできます。
SDKのトークン登録APIは、プレビュー版Mobile SDK連携の一部です。一般提供前に、イベント名、フィールド名、パッケージ配布方法、Push処理APIが変更される場合があります。
SDKは、設定されたRecordsエンドポイントへトークン登録イベントを送信します。Pushのライフサイクルは引き続きアプリが担当します。
| 責務 | アプリ | SDK |
|---|---|---|
| 通知権限をリクエストする | ✓ | |
| APNsまたはFCMトークンを取得する | ✓ | |
| トークンをTreasure AIへ登録する | SDKを呼び出す | ✓ |
| Push通知を受信する | ✓ | |
| システム通知を表示する | ✓ | |
| 通知タップを処理する | ✓ | |
| タップ後にURLをHosted Pagesとして表示する | openUrlを呼び出す | WebViewを表示する |
SDKは現在、APNsまたはFCMの受信サービスを管理しません。トークン登録だけでPush通知の受信・表示まで完了すると説明しないでください。
アプリでAPNsトークンを取得し、Providerと送信先テーブルを指定してSDKへ渡します。
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken token: Data
) {
TreasureData.sharedInstance().registerDeviceToken(
token,
provider: .apns,
table: "device_tokens"
)
}通知権限のリクエストとリモート通知の登録は、別途アプリで実装する必要があります。
FirebaseからFCMトークンを取得し、TDPushProvider.FCMを指定してSDKへ渡します。
override fun onNewToken(token: String) {
TreasureData.sharedInstance().registerDeviceToken(
token,
TDPushProvider.FCM,
"device_tokens"
)
}FCMがトークンを更新した場合は、メソッドを再度呼び出します。Firebaseの設定と通知権限の処理はアプリが担当します。
プレビューSDKはトークンをイベントとして登録し、イベントを即時にフラッシュします。Android M2実装では、次のフィールドを使用します。
{
"td_device_token": "<TOKEN>",
"td_push_provider": "fcm"
}Providerの値はapnsまたはfcmです。レコードにevent名のフィールドはありません。SDK APIを通じてアプリから任意のパラメーターを追加できます。
既存のPush Events Tableでは、token_registerイベントとfcm_tokenフィールドを説明しています。プレビューSDKのレコードはtd_device_tokenとtd_push_providerを使用し、event名のフィールドは付与しません。標準Mobile Pushイベントスキーマが確定するまでは、これらを同じ連携契約として扱わないでください。
Push payloadにURLが含まれている場合、アプリはURLをSDKへ渡せます。
TreasureData.sharedInstance().openUrl(
URL(string: "https://example.com/coupon")!,
context: ["coupon_id": "abc123"]
)TreasureData.sharedInstance().openUrl(
"https://example.com/coupon",
mapOf("coupon_id" to "abc123")
)この直接URL経路にはキャンペーンオファーのIDがありません。Hosted PagesのWebViewには表示されますが、キャンペーンのimpression、click、dismissイベントは作成されません。
- イベント送信には書き込み専用APIキーを使用します。
- 本番ログにAPNsまたはFCMトークンを出力しないでください。
- APIキーやPersonalization tokenをPush payloadに含めないでください。
- Hosted Pagesとして開くURLを検証してください。
- Deep Linkとアプリ所有のルートを遷移前に検証してください。
- トークンや関連イベントデータを送信する前に、同意とプライバシーポリシーを適用してください。