このページ:では、ライブアクティビティが表示、更新、終了できない理由を体系的に診断するため、単一およびブロードキャストのユースケースの両方で、プロファイルトークン、キャンペーン設定、ペイロード、配信の問題を解決できます。
シナリオの特定 find-your-scenario
シナリオ 1: プロファイルまたはプッシュトークンの問題 scenario-1-profile-or-push-token-issues
[単一とブロードキャストの両方のユースケースに適用]{class="badge informative"}
トリガーAPIはリクエストを受け入れますが、ライブアクティビティは表示されません。 一般的な原因:
- Adobe Experience Platformにプロファイルが存在しません。
- 必要なプッシュトークンが、iOSのライブアクティビティプッシュトークンまたはAndroidの標準FCM登録トークンのプロファイルに同期されていません。
- プッシュトークンの詳細に、間違った
appId、platform、iOSattributeTypeなどの誤った設定が含まれています。
ブロードキャストの場合: トークンの登録を確認するには、いくつかのオーディエンスプロファイルをサンプルしてください。 IOSでは、プロファイルトークンチェックは、チャネルベースの更新イベントやエンドイベントではなく、リモートのスタートイベントに適用されます。 Androidで、 シナリオ 6を使用して、デバイスのFCM トピックのサブスクリプションも確認します。
プロファイルが存在することを確認します
IOSとAndroidの場合は、まずこのチェックから始めます。 ブロードキャストの場合は、複数のオーディエンスプロファイルに対して繰り返します。
- Journey Optimizerで、Customer
>Profilesに移動します。 - API リクエストの名前空間とID値を使用して検索します。
- プロファイルが見つからない場合は、プロファイルが存在しないか、取り込みが完了していません。 プロファイルを作成するか、取り込みが完了するのを待ってからライブアクティビティをトリガーします。
- プロファイルが見つかった場合は、プラットフォームのトークンチェックに進みます。
プッシュトークンの確認
事前確認
-
iOS アプリの要件:
- iOS 16.1以降
NSSupportsLiveActivitiesがInfo.plistでYESに設定されましたActivityAttributesが正しく実装されました。
-
モバイルSDKとの連携:
- Adobe Experience Platform Mobile SDK(メッセージング SDK 5.11.0以降)
Messaging.registerLiveActivitiesが実装され、ライブアクティビティプッシュトークンで呼び出されました。
デバッグ手順
| accordion |
|---|
| 1. ライブアクティビティプッシュトークンが同期されているかどうかを確認する |
|
Assuranceを使用して、トークン登録を検証できます。
Adobe Experience Platformのプロフィールもご覧いただけます。
イベントが見つからない場合、アプリは |
| accordion | |||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. プロファイルのトークン詳細の検証 | |||||||||||||||||||||||
各フィールドを検証:
いずれかのフィールドが正しくない場合は、モバイルアプリを更新し、
|
事前確認
-
Android アプリの要件:
- Android 16.1 (API レベル 36.1)以降でアプリを実行し、
targetSdkを36に設定します。 POST_NOTIFICATIONSおよびPOST_PROMOTED_NOTIFICATIONS権限が付与されていることを確認してください。- ライブアクティビティで使用される通知チャネルを作成します。
- Android 16.1 (API レベル 36.1)以降でアプリを実行し、
-
モバイル SDKとの統合:
- Adobe Experience Platform Mobile SDKとMessagingおよびLive Activities拡張機能を統合します。
MobileCore.setPushIdentifier(token)を使用して、FCM登録トークンをSDKに転送します。
デバッグ手順
| accordion |
|---|
| 1. FCM トークン登録の確認 |
|
Androidは、標準のFCM登録トークンをライブアクティビティに使用します。
登録イベントまたはプロファイルトークンが見つからない場合は、アプリが |
| accordion | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. プロファイルのトークンの詳細を検証 | ||||||||||||||||||||
各フィールドを検証:
いずれかのフィールドが正しくない場合は、必要に応じてアプリ設定を修正し、
|
シナリオ 2: キャンペーン設定とペイロードの問題 scenario-2-campaign-configuration-and-payload-issues
[単一とブロードキャストの両方のユースケースに適用]{class="badge informative"}
プロファイルは存在し、有効なトークンがありますが、「ライブ」アクティビティは表示されません。 考えられる原因:
- サーフェスまたはチャネルの設定が正しくありません。
- 誤ったAPI ペイロード構造。
- ペイロードフィールドがアプリ実装と一致しません:iOS
ActivityAttributesまたはAndroid スタイルプロバイダーマッピング。 - 古い
timestamp(更新/終了に重要)。
放送: キャンペーンは、トランザクションではなく API トリガーのマーケティング である必要があります。 ペイロードはrecipientsではなくaudienceを使用します。 完全なAPI仕様については、 シナリオ 6でプラットフォーム固有のブロードキャストペイロードを参照し、Adobe Developer ドキュメント を参照してください。
事前確認
- キャンペーンがAPI トリガートランザクション (単一)またはAPI トリガーマーケティング (ブロードキャスト)であることを確認します。 ライブアクティビティと互換性がないため、高スループットを無効のままにします。
- プロファイルが存在し、そのトークンが シナリオ 1のiOS チェックを使用して同期されていることを確認します。
デバッグ手順
| accordion |
|---|
| 1. キャンペーンサーフェス設定の確認 |
|
| accordion | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. API ペイロード構造の検証 | ||||||||||||||||||||||||||
|
API経由でキャンペーンを実行する場合は、ペイロードが正しい構造に従っていることを確認します。 単一ペイロード:
一般的なペイロードの問題:
重要:常に新しいタイムスタンプを使用する
任意フィールド (すべてのイベントタイプ):
について
|
| accordion | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. ペイロードとiOSの実装の整合 | |||||||||||||||||||||||||||||||
|
API ペイロードがiOS アプリの マッピングを検証:
検証チェックリスト:
よくある間違い:
詳細な例については、 ライブアクティビティページの作成を参照してください。 |
| accordion |
|---|
| 4. Assuranceでテスト |
|
Assuranceを使用して、APIの実行とペイロードの配信を検証します。
|
事前確認
- キャンペーンがAPI トリガートランザクション (単一)またはAPI トリガーマーケティング (ブロードキャスト)であることを確認します。 ライブアクティビティと互換性がないため、高スループットを無効のままにします。
- プロファイルが存在し、そのFCM トークンが シナリオ 1のAndroid チェックを使用して同期されていることを確認します。
デバッグ手順
| accordion |
|---|
| 1. キャンペーンサーフェス設定の確認 |
|
| accordion | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. API ペイロード構造の検証 | ||||||||||||||||||||||||||||||||
|
Android Live アクティビティフィールドを 単一の開始ペイロード:
サンプルのタイムスタンプを、現在のUnixのエポック時間(秒単位)に置き換えます。 ブロードキャストの場合は、 一般的なペイロードの問題:
タイムスタンプとライフサイクルのチェック:
終了イベントの却下:
|
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. ペイロードとAndroidの実装の整合性 | |||||||||||||||||||||
|
アプリのスタイルプロバイダーは、ライブアクティビティ通知での
よくある間違い:
詳細な例については、 ライブアクティビティの作成を参照してください。 |
| accordion |
|---|
| 4. Assuranceでテスト |
|
接続されたAndroid テストデバイスでAssuranceを使用します。
|
シナリオ 3:配信エラーとエラー分析 scenario-3-delivery-failures-and-error-analysis
[単一とブロードキャストの両方のユースケースに適用]{class="badge informative"}
このシナリオでは、以前のすべてのチェックに合格しました。
- プロファイルは、デバイスプラットフォーム 🔗の有効なプッシュトークンで存在します。
- Campaignとペイロードは設定チェック に合格します。
- IOSの単一の更新または終了イベントの場合、 インスタンスごとの更新トークンが同期されます。 Androidでは、別の更新トークンは必要ありません。
ライブアクティビティがまだ表示、更新、終了しない場合は、キャンペーンの処理、プッシュプロバイダー(iOSのAPNまたはAndroidのFCM)への配信、デバイスサイドの動作を確認します。
放送の場合:件のレポートには、すべてのオーディエンスメンバーの指標が表示されます。 成功するプロファイルもあれば、失敗するプロファイルもあります。
キャンペーンレポートの確認 check-campaign-reports
IOSとAndroidの両方で、キャンペーンレポートから始めます。 Journey Optimizerが送信を試みたか、プロファイルを除外したか、エラーが発生したかを示します。
-
ライブアクティビティキャンペーンに移動します。
-
「レポート」ボタンをクリックします。
-
「すべての時間レポートを表示」を選択します。
-
配信の成功について理解するには、送信統計指標を確認してください。
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 指標 意味 ビジネスの成長を促進するための ターゲティング オーディエンスに適格なプロファイルの数 テストプロファイルを含める必要があります 送信数 試行されたプッシュ通知の合計 API呼び出しと一致する必要があります 配信済み 報告された配信指標 Sendsと比較します。デバイスのレンダリングを個別に検証します。 送信エラー 送信できなかったプッシュ通知 エラーの原因を調査する 除外を送信 Adobe Journey Optimizerによって除外されたプロファイル プロファイルが除外されたかどうかを確認する -
送信エラー > 0の場合は、エラーの理由 テーブルを確認してください。 プラットフォームのタブのステップ 1を使用して、エラーを解釈します。
-
除外を送信 > 0の場合、除外された理由 テーブルを確認します。
table 0-row-3 1-row-3 2-row-3 3-row-3 共通の除外 意味 解決策 プロファイルがオプトアウトされました ユーザーが通知をオプトアウトしました プロファイルの同意ステータスを確認 トークンをブロックリストに加える 無効としてマークされたトークン トークン(iOS)を再登録するか、現在のFCM トークン(Android)を転送するか、またはステータスを確認します プロファイルは対象外です プロファイルがキャンペーン条件を満たしていません キャンペーンオーディエンスのルールの確認 -
「ライブアクティビティライフサイクル」セクションを確認します。
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 指標 確認すべきこと リモートスタート API トリガー開始回数を表示する必要があります アップデート 更新イベント数を表示する必要があります 終了 終了イベント数を表示する必要があります 合計数 ライブアクティビティイベントの全体的な量 これらの指標が0であるか、API呼び出しと一致しない場合は、以下のプラットフォーム固有のチェックを使用して、キャンペーン処理とプッシュプロバイダー配信を調査します。
詳しくは、 ライブアクティビティキャンペーンレポートページ を参照してください。
プラットフォームの配信を確認する
事前確認
-
検証済みの以前のシナリオ:
- 正しい
liveActivityPushNotificationDetailsのプロファイルが存在します。 - キャンペーンサーフェスとアクティビティタイプが正しい。
- API ペイロードは、現在のタイムスタンプで有効です。
- 更新トークンは同期されます(単一の更新イベントと終了イベントのみ)。
- 正しい
-
API呼び出しが確認されました:
- トリガーAPIがリクエストを受け入れました。 これは、配信やデバイスのレンダリングを確認するものではありません。
- キャンペーン IDと受信者の詳細が正しい。
デバッグ手順
| accordion | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. 送信エラーの解釈 | ||||||||||||||||||
|
キャンペーンレポート に送信エラーが表示されない場合は、この手順をスキップしてください。 それ以外の場合は、Error Reasons テーブルのエラーを次の一般的なAPNs エラーと一致させます。
|
| accordion | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. プロファイル内のメッセージフィードバックイベントの確認 | ||||||||||||||||||
|
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. AssuranceのAPNへのライブアクティビティ配信を確認する | |||||||||||||||||||||
|
| accordion |
|---|
| 4. デバイス側の動作を確認する |
|
Adobeが正常に配信されたが、デバイスにライブアクティビティが表示されない場合:
|
| accordion |
|---|
| 5. Adobe サポートへのエスカレーション |
|
すべての手順を完了しても問題が解決しない場合は、Adobe カスタマーサポートにお問い合わせください。 必要な情報:
|
事前確認
-
検証済みの以前のシナリオ:
- 現在のFCM トークン、Android パッケージ名、
platform: "fcm"を含む、有効なpushNotificationDetailsのプロファイルが存在します。 - キャンペーンサーフェスは正しいAndroid アプリをターゲットとし、一致するFCM資格情報を使用します。
fcmペイロードは有効で、そのtimestampは同じnotification_id(またはブロードキャストの場合はtopic_name)の前のイベントよりも新しいものです。- 開始、更新、終了イベントでは、同じ
notification_idが使用されます。 単一イベントでは、同じFCM登録トークンを使用します。個別の更新トークンは必要ありません。
- 現在のFCM トークン、Android パッケージ名、
-
API呼び出しが確認されました:
- API呼び出しにより、HTTP 202 (受け入れ済み)が返されました。 これにより、配信やデバイスのレンダリングではなく、リクエストの受け入れが確認されます。
- キャンペーン IDと受信者の詳細が正しい。 ブロードキャストの場合は、オーディエンス IDとFCM トピックを確認します。
デバッグ手順
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. 送信エラーの解釈 | |||||||||||||||||||||
|
キャンペーンレポート に送信エラーが表示されない場合は、この手順をスキップしてください。 それ以外の場合は、Error Reasons テーブルのエラーを次の一般的なFCM エラーと一致させます。
|
| accordion | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. プロファイル内のメッセージフィードバックイベントの確認 | ||||||||||||||||||
|
| accordion |
|---|
| 3. AssuranceでのFCM配信の調査 |
|
接続されたAndroid テストデバイスでAssuranceを使用します。
|
| accordion |
|---|
| 4. デバイス側の動作を確認する |
|
Adobeが正常に配信されたが、デバイスがライブアクティビティを表示または更新しない場合:
|
| accordion |
|---|
| 5. Adobe サポートへのエスカレーション |
|
すべての手順を完了しても問題が解決しない場合は、Adobe カスタマーサポートにお問い合わせください。 必要な情報:
|
シナリオ 4: ライブアクティビティ更新トークンが同期されない scenario-4-live-activity-update-token-not-synced
[単一ユースケースにのみ適用]{class="badge informative"}
[iOSにのみ適用]{class="badge positive"}
ライブアクティビティはデバイスで開始されますが、受け入れられるupdateまたはend個のAPI リクエストは、更新または却下されません。 考えられる原因は、インスタンスごとのライブアクティビティ更新トークンがAdobe システムに同期されていないことです。 以下のチェックを完了して、トークンの同期が問題かどうかを確認します。
更新トークンについて
デバイスでライブアクティビティが開始されると、iOSは、その特定のライブアクティビティインスタンスに対して一意の更新トークンを生成します。 このトークンは、次の場合に必要です。
- ライブアクティビティへの更新の送信
- ライブアクティビティをリモートで終了する
各ライブアクティビティインスタンスには、それぞれ固有の更新トークンがあります。 Adobeでは、更新イベントと終了イベントを配信するためにこのトークンが必要です。
期待される動作
更新イベントと終了イベントを機能させるには、次の操作が必要です。
- デバイスでライブアクティビティが正常に開始されます。
- デバイスは、そのライブアクティビティインスタンスの更新トークンを生成します。
- Mobile SDKは、更新トークンをキャプチャし、Adobeに送信します。
- 更新トークンは同期され、Adobeのシステムに保存されます。
- 更新/終了に対する後続のAPI呼び出しは、このトークンを配信に使用します。
プリチェック:
手順のデバッグ
-
Assurance セッションを開きます。
-
ライブアクティビティがデバイスで開始されたときに、セッションがアクティブであることを確認します。
-
eventType = "liveActivity.updateToken"のイベントをフィルタリングまたは検索します。 -
イベントを選択し、ペイロードを調べます。
tokenフィールドに有効な更新トークン文字列が含まれていることを確認します。liveActivityIDがライブアクティビティインスタンスと一致することを確認します。activityTypeがattributes-typeと一致することを確認します。
-
イベントが見つからない場合:
- 更新トークンは、SDKによって生成またはキャプチャされませんでした。
- ユーザーがライブアクティビティ権限を付与したかどうかを確認します。
- 実際にデバイスで正常に開始されたことを確認します。
- 更新トークンを取得するために、モバイル SDKが適切に統合されていることを確認します。
-
イベントが見つかった場合は、手順2に進みます。
-
Journey OptimizerのCustomer > Profilesに移動します。
-
プロファイルを検索して開きます。
-
「イベント」タブを選択します。
-
liveActivity.updateTokenイベントを探します。 -
イベントの詳細を確認します。
- タイムスタンプが最新であることを確認します(ライブアクティビティが開始されたときに一致)。
tokenとliveActivityIDが存在することを確認します。activityTypeが正しいことを確認します。
-
プロファイルにイベントが見つからない場合:
- 更新トークンイベントはまだプロファイルに取り込まれていない可能性があります。
- 5~10分待って、もう一度確認してください。
- 15分経過しても見つからない場合は、イベント取り込みの問題が発生している可能性があります。
-
イベントが見つかった場合、更新トークンは同期されています。 手順3に進みます。
-
Assurance セッションで、更新または終了API呼び出しを実行します。
-
イベントリストで、ライブアクティビティ配信イベント(APNs プッシュイベント)を探します。
-
次を示すイベントを確認します。
- プッシュ通知がAPNに送信されました。
- APNからの応答(成功またはエラー)。
- 配達確認。
-
APNs配信イベントが存在する場合:プッシュ通知が送信されました。 それでもデバイスが更新されない場合、問題はデバイス側にある可能性があります(アプリがプッシュやネットワークの問題を処理しない場合など)。
-
APNs配信イベントが見つからない場合:更新トークンが正しく保存されていないか、Adobe システムのプロファイルに関連付けられていない可能性があります。
-
エラーイベントが存在する場合:特定のエラーの理由(無効なトークン、APNが拒否されたなど)について、エラーの詳細を調べます。
シナリオ 5: APIを介した実行ステータスの確認 scenario-5-checking-execution-status-via-the-api
[単一ユースケースにのみ適用]{class="badge informative"}
単一のLive アクティビティをトリガーした後、GET Message Execution APIは、実行の現在の状態を返します。 このインターフェイスを使用すると、フィードバックイベントがデータセットに表示されるのを待たずに、実行がキューに入っているか、進行中、完了しているか、失敗しているかを確認できます。
executionIdは、トリガー応答で返されたメッセージ IDです。 単一の実行の場合は、先頭にHUOC-が付きます。
エンドポイントとリクエスト例
エンドポイント: GET https://cjm.adobe.io/imp/message/executions/{executionId}
curl --location 'https://cjm.adobe.io/imp/message/executions/HUOC-123456' \
--header 'x-gw-ims-org-id: <IMS_ORG_ID>' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'x-sandbox-name: <SANDBOX_NAME>' \
--header 'x-sandbox-id: <SANDBOX_UUID>' \
--header 'x-api-key: <API_KEY>'
HTTP応答コード
実行ステータス値
200件の応答のstatus フィールドは、実行の進行状況を示します。
PENDINGINPROGRESSCOMPLETEDFAILED200件の応答では、executionType (unitaryまたはbatch)、executionRunMode (defaultまたはtest)、メタデータ (campaignId、journeyId、batchInstanceId、アセット情報)を含むsource ブロックも返されます。このブロックは、実行をトリガーキャンペーンまたはジャーニーに関連付けます。
シナリオ 6:ブロードキャストキャンペーンの設定とペイロードの問題 broadcast-config
[ ブロードキャストのユースケースにのみ適用]{class="badge informative"}
この節では、ブロードキャストライブアクティビティに固有のトラブルシューティングのシナリオについて説明します。これらのシナリオでは、単一キャンペーンとは異なるデバッグアプローチが必要です。
プロファイルに有効なトークンが含まれていても、ライブアクティビティがオーディエンスメンバーに表示されない、更新されない、または想定どおりに動作しない場合、問題は通常、次のいずれかに起因します。
- キャンペーンがAPI トリガーマーケティングとして設定されていません。
- API ペイロードに、
audienceまたはiOSのinput-push-channelまたはAndroidのtopic_nameのプラットフォーム固有のブロードキャスト IDがありません。 - ペイロードフィールドがiOS
ActivityAttributesの実装またはAndroid スタイルプロバイダーのマッピングと一致しません。 - Apple プッシュチャネルが正しく設定されていないか、Android デバイスがFCM トピックに登録されていません。
このトラブルシューティングのシナリオは、ブロードキャストキャンペーンのすべてのライブアクティビティイベント(start、update、およびend)に適用されます。
プリチェック:
-
キャンペーンの種類:
- キャンペーンがAPI トリガーマーケティングとして作成されていることを確認します(ブロードキャスト/オーディエンスベースのキャンペーンに必要)。
- キャンペーン設定でオーディエンスが定義されていることを確認します。
-
プロファイルとトークンの検証:オーディエンスから複数のプロファイルをサンプルして、有効な
liveActivityPushNotificationDetailsを持っていることを確認します。 詳細な検証手順については、 シナリオ 1に従ってください。
デバッグ手順
| accordion |
|---|
| 1. キャンペーンオーディエンス設定の確認 |
|
| accordion | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. ブロードキャスト API ペイロード構造の検証 | |||||||||||||||||||||||||||||
|
ブロードキャストペイロードの構造は、単一キャンペーンとは異なります。 ペイロードが正しいブロードキャスト形式に従っていることを確認します。 ブロードキャストの必須フィールド:
一般的なペイロードの問題:
重要なブロードキャスト固有のフィールド:
常に最新のタイムスタンプを使用:
任意フィールド:
完全なAPI仕様については、Adobe Journey Optimizer Messaging API ドキュメント を参照してください。 |
| accordion | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. IOSを活用して、content-state、attributes、input-push-channelの連携を強化 | |||||||||||||||||||||||||||||||
|
ペイロードフィールドがiOS アプリの
カスタム
すべてのイベントタイプに
重要:
主要な検証ポイント:
よくある間違い:
|
| accordion |
|---|
| 4. Assuranceでテスト |
|
Assuranceを使用して、APIの実行とペイロードの配信を検証します。
|
プリチェック:
- キャンペーンの種類: キャンペーンが API トリガーマーケティング であり、オーディエンスが定義されていることを確認します。
- プロファイルとトークンの検証:いくつかのオーディエンスプロファイルをサンプルして、
pushNotificationDetailsとplatform: "fcm"が有効であることを確認します。 シナリオ 1のAndroid チェックに従います。 - トピック サブスクリプション: テスト デバイスが、ブロードキャストに使用されるFCM トピックにサブスクライブされていることを確認します。
デバッグ手順
| accordion |
|---|
| 1. キャンペーンオーディエンス設定の確認 |
|
| accordion | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. ブロードキャスト API ペイロード構造の検証 | ||||||||||||||||||||||||||||||||
|
Androidの放送では、FCMのトピックを使用しています。 ブロードキャスト開始ペイロードの例:
サンプルのタイムスタンプを、現在のUnixのエポック時間(秒単位)に置き換えます。 アプリのスタイルプロバイダーに 一般的なペイロードの問題:
重要なブロードキャスト固有のフィールド:
タイムスタンプとオプションのフィールド:
完全なAPI仕様については、Adobe Journey Optimizer Messaging API ドキュメント を参照してください。 |
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. トピックの購読とアプリのレンダリングを確認する | |||||||||||||||||||||
よくある間違い:
その他のフィールドと例については、Android ブロードキャストペイロードの例を参照してください。 |
| accordion |
|---|
| 4. Assuranceでテスト |
|
オーディエンスの一部であり、ブロードキャストトピックにサブスクライブしているコネクテッドAndroidテストデバイスでAssuranceを使用します。
|
シナリオ 7: プロファイルがオーディエンス内にないか、古いオーディエンススナップショットです scenario-7-profile-not-in-audience-or-stale-audience-snapshot
[ ブロードキャストのユースケースにのみ適用]{class="badge informative"}
このシナリオでは、キャンペーンとペイロードは正しく設定されますが、特定のプロファイルはライブアクティビティを受信しません。 これは通常、次の場合に発生します。
- プロファイルは、キャンペーンにリンクされたオーディエンスのメンバーではありません。
- オーディエンスはバッチオーディエンスで、プロファイルデータの古いスナップショットが含まれています。
- プロファイルのプッシュトークンの詳細(
liveActivityPushNotificationDetailsiOSまたはpushNotificationDetailsAndroid)は最近更新されましたが、まだオーディエンススナップショットに反映されていません。
このトラブルシューティングのシナリオは、オーディエンスベースのターゲティングを使用するブロードキャストキャンペーンに特に適用されます。
オーディエンスの評価について
Adobe Experience Platformでは、プロファイルの更新がオーディエンスに反映されるタイミングを決定するために、様々なオーディエンス評価方法を使用します。
事前確認
-
キャンペーンとペイロードの検証:
- プラットフォームの シナリオ 6のチェックを完了して、キャンペーンとペイロードが正しいことを確認します。
- API ペイロードの
audience.idがキャンペーン設定と一致することを確認します。
-
プロファイルが存在します: プロファイルが有効なプッシュトークンの詳細を含むAdobe Experience Platformに存在することを確認します。 シナリオ 1のチェックに従います。 必要な情報は、プラットフォームによって異なります。
- iOS:
liveActivityPushNotificationDetailsに有効なトークンが含まれています。 - 現在のFCM登録トークンを含むAndroid:
pushNotificationDetails、Android パッケージ名に一致するappId、platform: "fcm"およびdenylisted: false。
- iOS:
-
トピックサブスクリプション (Androidのみ): デバイスが
topic_nameで指定された正確なFCM トピックにサブスクライブされていることを確認します。 オーディエンスメンバーシップは、デバイスをトピックにサブスクライブしません。 シナリオ 6のAndroid トピック購読チェックに従います。
デバッグ手順
まず、ライブアクティビティを受け取るプロファイルが実際にオーディエンスの一部であるかどうかを確認します。
-
Adobe Experience Platformの Audiences に移動します。
-
キャンペーンの
audience.idを使用してオーディエンスを検索し、開きます。 -
参照または サンプルプロファイル をクリックして、オーディエンスメンバーを表示します。
-
名前空間とID値を使用して、テストプロファイルを検索します。
-
オーディエンスにプロファイルが見つからない場合:
- プロファイルがオーディエンスの基準またはセグメントルールを満たしていません。
- オーディエンス定義を確認して、メンバーシップ要件を理解します。
- プロファイルデータまたはオーディエンス定義を更新して、プロファイルを含めます。
- オーディエンスの評価が完了するのを待ちます(手順2を参照)。
-
オーディエンスにプロファイルが見つかった場合: ステップ 2に進んで、データの鮮度を確認します。
オーディエンスがバッチ、ストリーミング、エッジのどの評価を使用しているのかを特定し、データの鮮度を判断します。
| note |
|---|
| NOTE |
| Audience evaluationでは、プッシュトークンを登録したり、Android デバイスをFCM トピックに登録したりすることはありません。 オーディエンススナップショットに含まれるプロファイルデータのみが決定されます。 |
-
オーディエンスの詳細 ページで、評価方法を確認します。
- バッチ:毎日1回、スケジュールに従って評価されます。
- ストリーミング: プロファイルの更新時にリアルタイムで評価されます。
- Edge: リアルタイムでエッジの場所で評価されました。
評価方法に基づく適切なトラブルシューティング手順に従います。
オーディエンスがバッチ評価を使用している場合:
-
バッチオーディエンスの制限について:
- バッチオーディエンスは、1日に1回(通常は毎晩)評価されます。
- オーディエンスのスナップショットは、最大で24時間前になる場合があります。
- プロファイルがプッシュトークンの詳細(
liveActivityPushNotificationDetailsiOSまたはpushNotificationDetailsAndroid)を最近登録または更新した場合、更新された詳細が現在のスナップショットにない可能性があります。 - プロファイルの更新は、次のバッチ評価まで反映されません。
-
最後の評価が発生した際の確認:
- オーディエンスの詳細で、最終評価 タイムスタンプを探します。
- このタイムスタンプの後にプロファイルのプッシュトークンの詳細が更新された場合、オーディエンススナップショットには現在のトークンは含まれません。
-
古いデータを解決:
-
オプション 1:スケジュールされたバッチ評価を待つ
- 次のバッチ評価には、更新されたプロファイルデータが含まれます。
- これは1日に1回自動的に行われます。
- 緊急性の低いシナリオに最適:
-
オプション 2: オンデマンドのオーディエンス評価のトリガー
- AEPの Audiences に移動します。
- オーディエンスを選択します。
- 今すぐ評価または オンデマンドでアクティベート をクリックします。
- 評価が完了するまで待ちます(オーディエンスサイズによっては数分から数時間かかる場合があります)。
- プロファイルがオーディエンススナップショットのデータを更新したことを確認します。
- ブロードキャスト API呼び出しを再試行します。
-
オーディエンスがストリーミング評価を使用している場合:
-
ストリーミングオーディエンスの動作について:
- ストリーミングオーディエンスは、プロファイルの更新が発生したときにリアルタイムで評価されます。
- 新しいプロファイル: セグメントの条件を満たす場合は、作成後すぐに選定します。
- 更新されたプロファイル:更新された直後に選定または選定を解除しました。
- 既存の変更されていないプロファイル:更新が発生しない限り、再評価されません。
-
問題の特定:
- プロファイルが既に存在し、セグメント条件を満たしていても、そのプロファイルに更新が発生しない場合は、新しく作成されたストリーミングオーディエンスに追加できない可能性があります。
- プロファイルは、トリガーの再評価に対する更新(属性の変更)を受け取る必要があります。
-
問題の解決:
-
新しいプロファイルの場合:条件が満たされると、自動的に選定されます。 行動は必要ありません。
-
最近更新されていない既存のプロファイルの場合:
- プロファイルのマイナーアップデートを行います(例えば、タイムスタンプフィールドのアップデート)。
- ストリーミング評価がトリガーされ、プロファイルがオーディエンスに追加されます。
- 代替案:既存のプロファイルにバッチオーディエンスまたはエッジオーディエンスを使用します。
-
詳細設定:データセットのクエリによるデバッグ advanced-debugging-via-dataset-queries
message.feedback イベントが使用され、同じスキーマパスとfeedbackStatus値が以下に示されています。sent ステータスは、プッシュプロバイダーへの引き継ぎを示します。iOSのAPNまたはAndroidのFCMです。Audience:開発者およびデータエンジニア。 Adobe Experience Platform Query Service経由でJourney Optimizer データセットにSQL アクセスする必要があります。
使用するタイミング: Assuranceは、アクティブなセッション中に接続されたテストデバイスに限定されます。 データセットクエリを使用して、本番環境のエンドユーザーが報告した問題を調査したり、ファクトの後に配信履歴を監査したりできます。 このデータセットは、Assurance プラグインと同じライフサイクルおよび障害情報を公開します。
データセットの検索
-
Journey Optimizerで、Data Management
>Datasetsに移動します。 -
「システムデータセットを表示」トグルを有効にし、AJO メッセージフィードバックイベントデータセットを開きます。
詳細ページに表示されているテーブル名を正確に記録します。 以下のクエリでは、ajo_message_feedback_event_datasetを使用しています。異なる場合は、実際のテーブル名に置き換えてください。 このデータセットのフィールドについては、Adobe Journey Optimizer スキーマ参照を参照してください。
ライブアクティビティ IDによるクエリ
これは、ライブアクティビティ ID (注文UUIDや出荷追跡IDなど)がわかっていて、すべてのフィードバックイベントをライフサイクル全体で関連付ける場合に使用します。
SELECT
timestamp,
identitymap,
_experience.customerJourneyManagement
.messageDeliveryfeedback.feedbackStatus AS status,
_experience.customerJourneyManagement
.messageDeliveryfeedback.messageFailure.reason AS failure_reason,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.event AS la_event,
_experience.customerJourneyManagement
.messageExecution.campaignID AS campaign_id,
_experience.customerJourneyManagement
.messageExecution.batchInstanceID AS batch_id,
_id
FROM ajo_message_feedback_event_dataset
WHERE
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.liveActivityID
= '<YOUR_LIVE_ACTIVITY_ID>'
AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
ECIDによるクエリ
影響を受けるプロファイルのECIDがわかっている場合に使用します。 <YOUR_ECID>をプロファイルから取得したECID値に置き換えます。
SELECT
timestamp,
_experience.customerJourneyManagement
.messageDeliveryfeedback.feedbackStatus AS status,
_experience.customerJourneyManagement
.messageDeliveryfeedback.messageFailure.reason AS failure_reason,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.event AS la_event,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.liveActivityID AS la_id,
_experience.customerJourneyManagement
.messageExecution.campaignID AS campaign_id,
_id
FROM ajo_message_feedback_event_dataset
WHERE
identityMap['ECID'][0].id = '<YOUR_ECID>'
AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
identityMapは構造化MAP タイプであり、文字列ではありません。 上記の配列と構造体アクセサーの構文を使用します。 LIKEなどの文字列関数は、DATATYPE_MISMATCH エラーを返します。identityMapに格納します。 影響を受けるプロファイルがECIDではなくカスタム名前空間で識別される場合は、最初にECIDを解決します。AEPの Profiles に移動し、カスタム名前空間とID値を使用してプロファイルを検索し、プロファイルのIDの詳細からECIDを取得します。 上記のクエリでそのECID値を使用します。feedbackStatus値
senterrorfailure_reasonで詳細を確認してくださいdenylistexcludedelayduplicatebouncela_event フィールドの場合、最初の配信イベントのデータセット レコードはstartではなくremotestartです。 イベントタイプでクエリを実行する際に、それに応じてフィルタリングします。送信済みステータスの解釈 interpreting-the-sent-status
sentのfeedbackStatusは、Journey Optimizerがプッシュプロバイダー(iOSのAPN、AndroidのFCM)に通知を正常に渡したことを確認します。 ライブ アクティビティがデバイス上でレンダリングされたことを not が確認します。
プッシュプロバイダーへのハンドオフ後、データセットでデバイスレンダリングが確認されない。 OSの制限、プロバイダーとデバイス間のネットワークドロップ、iOSで達している8時間のライブアクティビティ期間の制限など、デバイス側のエラーは、データセットから観察できません。
feedbackStatusがsentであるが、デバイスにライブアクティビティが表示されない場合は、Journey Optimizer配信パイプライン外の動作を調査します。 AssuranceまたはAndroidのlogcatを含むアプリレベルのログを使用して、デバイスサイドの動作を診断します。
This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page provides a systematic approach to diagnose why Live activities fail to appear, update, or end even when the API returns HTTP 200, covering profile and token, campaign configuration, payload, and delivery issues for unitary and broadcast use cases on iOS and Android.
Intents:
- Distinguish the unitary (API-triggered Transactional) and broadcast (API-triggered Marketing) debugging paths
- Verify profile existence and Live activity push token sync (Scenario 1)
- Validate campaign surface, Activity type, and API payload structure (Scenario 2)
- Analyze delivery failures via campaign reports and
message.feedbackevents (Scenario 3) - Diagnose unsynced iOS update tokens (Scenario 4) and check unitary execution status via the GET Message Execution API (Scenario 5)
- Troubleshoot broadcast payload and audience-freshness issues (Scenarios 6 and 7) and query the feedback dataset directly (Advanced)
Glossary:
-
pushNotificationDetails: The AEP profile attribute used for Android FCM registration-token details, includingappId,platform, anddenylisted(product-specific) -
topic_name: The FCM topic subscribed to by target Android devices for broadcast Live activities (product-specific) -
Push-to-start token: An iOS APNs token used for remote start; registered by the mobile SDK and stored on the AEP profile (product-specific)
-
Update token: A per-instance APNs token generated when an iOS Live activity starts; required for iOS unitary
updateandendevents. Android uses the same FCM registration token for start, update, and end; no separate update token is required (product-specific) -
input-push-channel: A unique channel identifier created on the Apple Developer Portal for iOS broadcast Live activities (product-specific) -
liveActivityData: A required property on the Adobe SDKLiveActivityAttributesprotocol; the iOS examples includeliveActivityIDfor unitary orchannelIDfor broadcast (product-specific) -
channelID: The value inliveActivityData.channelID; must exactly matchinput-push-channelfor iOS broadcasts (product-specific) -
attributeType / attributes-type: The name of the Swift
ActivityAttributesstruct; stored asattributeType(camelCase) on the profile and sent asattributes-type(hyphenated) in APS JSON — the same value in different representations (product-specific) -
liveActivityPushNotificationDetails: The AEP profile attribute that stores a device’s push-to-start token,appId,platform, andattributeType(product-specific) -
APS payload: The iOS JSON structure sent under
context.requestPayload.aps, containing the event,content-state, and control fields;attributesincludes the iOS struct fields for start events (product-specific) -
Assurance: A debugging tool limited to test devices connected during an active session; use dataset queries for production end-user diagnostics (product-specific)
-
topic_name(Android): The shared FCM topic through which subscribed devices receive broadcast events; the Android equivalent of iOSinput-push-channel -
notification_id(Android): Client-generated identifier for a Live activity instance; keep it unchanged across start, update, and end events to target the same instance -
timestamp(Android): Message ordering key, expressed in epoch seconds -
when(Android): Optional notification display time, expressed in epoch seconds; it does not control message ordering -
dismiss_after(Android): Used only for end events; specifies how many seconds the completed Live activity remains visible before removal
Guardrails:
-
Android audience membership does not subscribe a device to the FCM topic; verify topic subscription separately from audience evaluation.
-
Use API-triggered Transactional campaigns for unitary Live activities and API-triggered Marketing campaigns for broadcasts.
-
The High Throughput option must not be enabled, since it is incompatible with Live activity.
-
Assurance sessions are for test and QA devices only; end-user production devices are not connected to Assurance.
-
Android: unitary Live activities use the same regular FCM push token to start, update, and end, and no separate activity tokens are required; broadcast events reach subscribed devices through the shared FCM topic identified by
topic_name. -
Android
timestampmust strictly increase for every event with the samenotification_id(ortopic_namefor broadcasts); updates are displayed only if their timestamp is newer than the last processed value, and older or equal timestamps are ignored. -
Android
action_type/action_uriare not read by the current Android SDK. -
iOS requirements: a physical iOS device on iOS 16.1 or later; the Xcode Simulator supports local start only (remote push via APNs is not supported on Simulator); remote start from Assurance requires iOS 17.1 or later, a valid push-to-start token, and a valid channel configuration; Adobe Experience Platform Mobile SDK 5.11.0 or later.
-
Batch audiences may be up to 24 hours stale (batch evaluation, once daily); this audience-freshness risk is not applicable to unitary use cases.
-
The first time a Live activity starts on a device, iOS shows a one-time permission prompt; the user must tap “Allow” for update tokens to be generated and synced.
-
For iOS broadcasts,
input-push-channelmust exactly matchliveActivityData.channelID; a mismatch causes delivery failures. -
For iOS, a
feedbackStatusofsentconfirms hand-off to APNs only, not device rendering; device-side failures and the 8-hour Live activity duration limit are not observable from the dataset.
Terminology:
- Canonical name: API Triggered Campaign — Acronym: n/a — campaign types used for Live activities: API-triggered Transactional (unitary), API-triggered Marketing (broadcast)
- Synonyms: “attributeType” = “attributes-type” (the same value; camelCase on the profile, hyphenated in APS JSON)
- Do not confuse:
input-push-channel(in the iOS APS payload) ≠liveActivityData.channelID(in the iOS attributes); their values must match for broadcasts. - Do not confuse: “Push-to-start token” (starts an iOS Live activity, stored on the profile) ≠ “Update token” (updates or ends an iOS unitary instance, per instance)
- Do not confuse: “Unitary” (API-triggered Transactional, individual profile) ≠ “Broadcast” (API-triggered Marketing, audience segment)
- Do not confuse: execution statuses “
PENDING” ≠ “INPROGRESS” ≠ “COMPLETED” ≠ “FAILED” - Do not confuse:
feedbackStatus“sent” ≠ “error” ≠ “exclude” ≠ “delay” - Do not confuse: “
timestamp” (iOS: the current Unix epoch time in seconds for every call; Android: the ordering key that must strictly increase pernotification_idortopic_name) ≠ “when” (Android: optional notification display time that does not control ordering) - Do not confuse:
la_eventvalue “remotestart” (recorded in the dataset for initial delivery) ≠ “start” (theeventfield value in the payload)
FAQ:
- Q: Why does the API return 200 OK but the Live activity does not appear? — A successful response (200 OK) does not guarantee the Live activity appears; the delivery can fail at multiple points, from API request validation through device rendering, so work through Scenarios 1 to 3.
- Q: Can I use Assurance for production end-user devices? — No; Assurance sessions are for test and QA devices only. For production diagnostics, use the dataset queries.
- Q: Why do update and end calls fail after the Live activity started? — The per-instance update token may not be synced; the user must have tapped “Allow” on the one-time permission prompt for update tokens to be generated (Scenario 4).
- Q: How do I check execution status programmatically? — Use the GET Message Execution API; for unitary executions the
executionIdis prefixed withHUOC-, and thestatusfield returnsPENDING,INPROGRESS,COMPLETED, orFAILED. - Q: What does a
feedbackStatusofsentmean on iOS? — It confirms Journey Optimizer successfully handed the notification to APNs; it does not confirm that the Live activity was rendered on the device. - Q: Why are some audience members not receiving a broadcast? — The profile may not be in the audience, or a batch audience snapshot may be up to 24 hours stale; trigger on-demand evaluation or ensure a streaming update occurs (Scenario 7).