一般的なライブアクティビティのトラブルシューティング シナリオ troubleshoot-mobile-live

このページ:​では、ライブアクティビティが表示、更新、終了できない理由を体系的に診断するため、単一およびブロードキャストのユースケースの両方で、プロファイルトークン、キャンペーン設定、ペイロード、配信の問題を解決できます。

シナリオの特定 find-your-scenario

症状またはタスク
ここから開始
ライブアクティビティが開始されない
​ シナリオ 1: プロファイルとトークン ​、次に​ シナリオ 2: キャンペーンとペイロード ​
設定チェックは合格しますが、配信は失敗します
​ シナリオ 3:配信エラー
iOS単一ライブアクティビティが開始されますが、更新または終了しません
​ シナリオ 4: トークン同期の更新
Android Live アクティビティが開始されますが、更新または終了しません
​ シナリオ 2および​ シナリオ 3のAndroid タブ
単一リクエストの処理ステータスの確認
​ シナリオ 5:実行ステータス API
ブロードキャストが開始、更新、終了しない
​ シナリオ 6: ブロードキャスト設定
一部のオーディエンスプロファイルはブロードキャストを受信しません
​ シナリオ 7: オーディエンスのメンバーシップと鮮度
制作上の問題や過去の配信を調査する
​ データセットクエリ ​

シナリオ 1: プロファイルまたはプッシュトークンの問題 scenario-1-profile-or-push-token-issues

[単一とブロードキャストの両方のユースケースに適用]{class="badge informative"}

トリガーAPIはリクエストを受け入れますが、ライブアクティビティは表示されません。 一般的な原因:

  • Adobe Experience Platformにプロファイルが存在しません。
  • 必要なプッシュトークンが、iOSのライブアクティビティプッシュトークンまたはAndroidの標準FCM登録トークンのプロファイルに同期されていません。
  • プッシュトークンの詳細に、間違ったappId、platform、iOS attributeTypeなどの誤った設定が含まれています。

ブロードキャストの場合: トークンの登録を確認するには、いくつかのオーディエンスプロファイルをサンプルしてください。 IOSでは、プロファイルトークンチェックは、チャネルベースの更新イベントやエンドイベントではなく、リモートのスタートイベントに適用されます。 Androidで、​ シナリオ 6を使用して、デバイスのFCM トピックのサブスクリプションも確認します。

プロファイルが存在することを確認します

IOSとAndroidの場合は、まずこのチェックから始めます。 ブロードキャストの場合は、複数のオーディエンスプロファイルに対して繰り返します。

  1. Journey Optimizerで、Customer > Profiles​に移動します。
  2. API リクエストの名前空間とID値を使用して検索します。
  3. プロファイルが見つからない場合は、プロファイルが存在しないか、取り込みが完了していません。 プロファイルを作成するか、取り込みが完了するのを待ってからライブアクティビティをトリガーします。
  4. プロファイルが見つかった場合は、プラットフォームのトークンチェックに進みます。

プッシュトークンの確認

iOS

事前確認

  • iOS アプリの要件:

    • iOS 16.1以降
    • NSSupportsLiveActivitiesがInfo.plistでYESに設定されました
    • ActivityAttributesが正しく実装されました。
  • モバイルSDKとの連携:

    • Adobe Experience Platform Mobile SDK(メッセージング SDK 5.11.0以降)
    • Messaging.registerLiveActivitiesが実装され、ライブアクティビティプッシュトークンで呼び出されました。

デバッグ手順

accordion
​1. ライブアクティビティプッシュトークンが同期されているかどうかを確認する

Assuranceを使用して、トークン登録を検証できます。

  1. Assuranceでは、イベント リストから、イベント eventType = "liveActivity.pushToStart"をフィルタリングまたは検索します。
  2. イベント​を選択し、ペイロードを調べます。
  3. token、appIdおよびattributeTypeの値が存在することを確認してください。
  4. イベントが正常に送信されたことを確認します。

Adobe Experience Platformのプロフィールもご覧いただけます。

  1. Adobe Experience Platformで、プロファイル​から「イベント」タブにアクセスします。
  2. liveActivity.pushToStart イベントを検索します。
  3. イベントのタイムスタンプとペイロードを確認します。

イベントが見つからない場合、アプリはMessaging.registerLiveActivitiesを正しく呼び出していません。 SDKとの連携を解消。

accordion
​2. プロファイルのトークン詳細の検証
  1. プロファイル​から、属性 タブにアクセスします。

  2. liveActivityPushNotificationDetailsを探します。

  3. トークン設定を確認します。

    code language-json
    {
       "liveActivityPushNotificationDetails": [
       {
          "appId": "com.example.myapp",
          "token": "abc123def456...",
          "platform": "apns",
          "denylisted": false,
          "attributeType": "OrderTrackingAttributes",
          "identity": {}
       }
       ]
    }
    

各フィールドを検証:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
フィールド 要件 共通の問題
appId IOS バンドル IDと完全に一致する必要があります 開発バンドル IDと実稼動バンドル IDが一致しません
attributeType Swift ActivityAttributes構造体名と完全に一致する必要があります(大文字と小文字を区別) タイプミスまたは構造体名が正しくない
platform "apns"または"apnsSandbox"である必要があります 誤ったプラットフォーム値
denylisted falseでなければなりません 無効またはユーザーがオプトアウトとしてマークされたトークン
token 有効なAPNs プッシュトークン トークンの有効期限が切れているか、アプリが再インストールされています

いずれかのフィールドが正しくない場合は、モバイルアプリを更新し、Messaging.registerLiveActivitiesを使用して再登録し、5 ~ 10分待ってから、もう一度確認します。

liveActivityPushNotificationDetailsが見つからない場合、トークンはまだ同期されていません。 AssuranceでliveActivity.pushToStart イベントが発生してから5 ~ 10分待ってから、もう一度確認してください。

Android

事前確認

  • Android アプリの要件:

    • Android 16.1 (API レベル 36.1)以降でアプリを実行し、targetSdkを36に設定します。
    • POST_NOTIFICATIONSおよびPOST_PROMOTED_NOTIFICATIONS権限が付与されていることを確認してください。
    • ライブアクティビティで使用される通知チャネルを作成します。
  • モバイル SDKとの統合:

    • Adobe Experience Platform Mobile SDKとMessagingおよびLive Activities拡張機能を統合します。
    • MobileCore.setPushIdentifier(token)を使用して、FCM登録トークンをSDKに転送します。

デバッグ手順

accordion
​1. FCM トークン登録の確認

Androidは、標準のFCM登録トークンをライブアクティビティに使用します。 liveActivity.pushToStart イベントまたは個別のライブアクティビティプッシュトークンがありません。

  1. Assuranceで、Events リストを開き、標準のプッシュトークン登録イベントを見つけます。
  2. イベントを選択し、そのペイロードを調べて、FCM登録トークンが存在することを確認します。
  3. 登録イベントが正常に送信されたことを確認します。
  4. Adobe Experience Platformで、プロファイルの「属性」タブを開き、手順2で説明されているように、トークンがpushNotificationDetailsに存在することを確認します。

登録イベントまたはプロファイルトークンが見つからない場合は、アプリがMobileCore.setPushIdentifier(token)を使用してFCM登録トークンをSDKに転送することを確認します。

accordion
​2. プロファイルのトークンの詳細を検証
  1. プロファイルから、「属性」タブにアクセスします。

  2. pushNotificationDetailsを探します。 AndroidはliveActivityPushNotificationDetailsではなく、このオブジェクトを使用します。attributeType フィールドは必要ありません。

  3. トークン設定がこの構造に従っていることを確認します。

    code language-json
    {
       "pushNotificationDetails": [
          {
             "appId": "com.adobe.marketing.mobile.liveupdatessample",
             "token": "fcm-registration-token...",
             "platform": "fcm",
             "denylisted": false,
             "identity": {}
          }
       ]
    }
    

各フィールドを検証:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
フィールド 要件 共通の問題
appId Android パッケージ名と完全に一致する必要があります 開発用パッケージ名と実稼動用パッケージ名の間に不一致がある
platform "fcm"でなければなりません 誤ったプラットフォーム値
denylisted falseでなければなりません 無効またはユーザーがオプトアウトとしてマークされたトークン
token デバイスの現在のFCM登録トークンと一致する必要があります トークンの有効期限が切れているか、アプリが再インストールされています

いずれかのフィールドが正しくない場合は、必要に応じてアプリ設定を修正し、MobileCore.setPushIdentifier(token)を使用してFCM トークンを再度転送し、5 ~ 10分待ってから、プロファイルを再度確認します。

pushNotificationDetailsが見つからない場合、トークンはまだ同期されていません。 Assuranceでトークン登録を確認したら、5~10分待ってから、プロファイルを再度確認します。

シナリオ 2: キャンペーン設定とペイロードの問題 scenario-2-campaign-configuration-and-payload-issues

[単一とブロードキャストの両方のユースケースに適用]{class="badge informative"}

プロファイルは存在し、有効なトークンがありますが、「ライブ」アクティビティは表示されません。 考えられる原因:

  • サーフェスまたはチャネルの設定が正しくありません。
  • 誤ったAPI ペイロード構造。
  • ペイロードフィールドがアプリ実装と一致しません:iOS ActivityAttributesまたはAndroid スタイルプロバイダーマッピング。
  • 古いtimestamp (更新/終了に重要)。

放送: キャンペーンは、トランザクションではなく​ API トリガーのマーケティング ​である必要があります。 ペイロードはrecipientsではなくaudienceを使用します。 完全なAPI仕様については、​ シナリオ 6でプラットフォーム固有のブロードキャストペイロードを参照し、Adobe Developer ドキュメント ​を参照してください。

iOS

事前確認

  • キャンペーンが​API トリガートランザクション (単一)または​API トリガーマーケティング (ブロードキャスト)であることを確認します。 ライブアクティビティと互換性がないため、高スループット​を無効のままにします。
  • プロファイルが存在し、そのトークンが​ シナリオ 1のiOS チェックを使用して同期されていることを確認します。

デバッグ手順

accordion
​1. キャンペーンサーフェス設定の確認
  1. Journey Optimizerで​ キャンペーン ​を開き、アクション メニューに移動します。
  2. ライブアクティビティ設定​を確認します。 IOS アプリのサーフェスは、プロファイルのliveActivityPushNotificationDetailsのappIdと一致するバンドル IDで設定する必要があります。 例えば、プロファイルに"appId": "com.example.myapp"がある場合、サーフェスは同じアプリをターゲットにする必要があります。
  3. キャンペーン設定の​ アクティビティタイプ ​が、プロファイルのliveActivityPushNotificationDetailsのattributeTypeと正確に一致することを確認します。 例えば、プロファイルに"attributeType": "FoodDeliveryLiveActivityAttributes"がある場合、キャンペーンはこの同じアクティビティタイプを指定する必要があります。
accordion
​2. API ペイロード構造の検証

API経由でキャンペーンを実行する場合は、ペイロードが正しい構造に従っていることを確認します。

単一ペイロード:

code language-json
{
   "campaignId": "your-campaign-id",
   "recipients": [{
      "type": "aep",
      "userId": "user@example.com",
      "namespace": "email",
      "context": {
         "requestPayload": {
            "aps": {
               "content-available": 1,
               "timestamp": 1756984054,
               "event": "start",
               "attributes-type": "FoodDeliveryLiveActivityAttributes",
               "content-state": { ... },
               "attributes": { ... }
            }
         }
      }
   }]
}

一般的なペイロードの問題:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3
フィールド 要件 共通の問題
attributes-type キャンペーンアクティビティタイプとプロファイル attributeTypeを一致させる必要があります 不一致またはタイプミス
campaignId アクティブなキャンペーン IDと一致する必要があります キャンペーン IDが間違っているか見つかりません
content-available 1でなければなりません 値が見つからないか間違っています
event "start"、"update"または"end"である必要があります 無効なイベントタイプ
timestamp 常に最新のUnixのエポックタイムを秒単位にする必要があります 古い/キャッシュされたタイムスタンプの使用
userId / namespace AEPの既存のプロファイルと一致する必要があります プロファイル IDが一致しません

重要:常に新しいタイムスタンプを使用する

  • 各API呼び出しを行った時点で、timestampを現在のUnix エポックタイム(秒単位)に設定します。 これは、すべてのイベントタイプ(start、update、およびend)に適用されます。
  • 古いタイムスタンプまたは再利用されたタイムスタンプは、更新リクエストと終了リクエストが失敗するか、デバイスによって無視されます。 以前のリクエストまたはキャッシュされた値のタイムスタンプを​ not ​で再利用してください。

任意フィールド (すべてのイベントタイプ):

  • requestId: トラッキング用の一意のID (推奨)。
  • alert:通知にtitleとbodyを含むオブジェクト。 更新に注目を集めるのに便利です。

についてdismissal-date:

  • オプション。 Unixのエポックタイム(秒)。 eventが"end"の場合にのみ関連します。
  • ライブアクティビティがデバイスから自動的に削除されるタイミングを指定します。 これを省略すると、ユーザーが解除するまでライブアクティビティは表示されたままになります。
  • timestamp以降のタイムスタンプである必要があります。
accordion
​3. ペイロードとiOSの実装の整合

API ペイロードがiOS アプリのActivityAttributes実装と一致していることを確認します。 Adobe SDKのLiveActivityAttributes プロトコルは、iOS ActivityAttributesを拡張し、liveActivityData プロパティを必要とします。

マッピングを検証:

  1. お使いのActivityAttributesは、AdobeのLiveActivityAttributes プロトコルを実装する必要があります。 例:

    code language-swift
    struct FoodDeliveryLiveActivityAttributes: LiveActivityAttributes {
       public struct ContentState: Codable, Hashable {
          var orderStatus: String
          var estimatedDeliveryTime: String
       }
    
       // Adobe SDK requirement
       var liveActivityData: LiveActivityData
    
       // Your custom attributes
       var restaurantName: String
    }
    

    注意 liveActivityData フィールドはAdobe SDKで必要であり、すべての実装に含める必要があります。

  2. API ペイロードは、iOS構造をミラーリングする必要があります。

    code language-json
    {
       "aps": {
          "event": "start",
          "timestamp": 1756984054,
          "attributes-type": "FoodDeliveryLiveActivityAttributes",
          "content-state": {
             "orderStatus": "Preparing",
             "estimatedDeliveryTime": "20 mins"
          },
          "attributes": {
             "liveActivityData": {
                "liveActivityID": "order-12345"
             },
             "restaurantName": "Pizza Palace"
          }
       }
    }
    

検証チェックリスト:

  • すべてのContentState フィールドをcontent-stateに含めます(すべてのイベントタイプに必須)。

  • 次を含むすべてのLiveActivityAttributes フィールドをattributesに含めます(開始イベントのみ)。

    • liveActivityData (必須。通常はliveActivityIDまたは類似の識別子が含まれます)
    • 構造体のすべてのカスタムフィールド
  • フィールド名を正確に一致させます(大文字と小文字を区別します)。

  • データタイプ(文字列、Int、Bool、ネストされたオブジェクト)を一致させます。

  • ネストされたオブジェクト構造を保持します。

よくある間違い:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3
問題 影響 修正
属性にliveActivityDataがありません ライブアクティビティは開始されません 開始イベントに常にliveActivityData オブジェクトを含める
開始イベントに必須フィールドがありません ライブアクティビティは開始されません IOS構造体からすべてのフィールドを追加する
間違ったフィールド名(タイプミス/ケース) フィールドが無視されたかエラーを解析しました IOSのフィールド名と正確に一致
間違ったデータタイプ 解析エラー IOS データタイプの一致
ネストされたオブジェクトがありません 不完全なデータ すべてのネストされた構造を含める
更新/終了にattributesを含む 不要だが、通常は無視される 開始イベントにattributesのみを含める
更新/終了時の古いタイムスタンプ デバイスで更新/終了が無視されました 常に新しいタイムスタンプを生成

詳細な例については、​ ライブアクティビティページの作成を参照してください。

accordion
​4. Assuranceでテスト

Assuranceを使用して、APIの実行とペイロードの配信を検証します。

  1. Assurance セッションを開きます。

  2. API呼び出しを実行して、ライブアクティビティをトリガーします。

  3. イベントリスト​で、次を確認します。

    • キャンペーン実行イベント:
    • ライブアクティビティ配信イベント:
    • ペイロード検証エラーイベント。
  4. イベントペイロードを確認して、以下を確認します。

    • ペイロードが正しく処理されました。
    • 検証エラーは発生しませんでした。
    • ライブアクティビティがAPNに送信されました。
Android

事前確認

  • キャンペーンが​API トリガートランザクション (単一)または​API トリガーマーケティング (ブロードキャスト)であることを確認します。 ライブアクティビティと互換性がないため、高スループット​を無効のままにします。
  • プロファイルが存在し、そのFCM トークンが​ シナリオ 1のAndroid チェックを使用して同期されていることを確認します。

デバッグ手順

accordion
​1. キャンペーンサーフェス設定の確認
  1. Journey Optimizerで​ キャンペーン ​を開き、アクション メニューに移動します。
  2. ライブアクティビティ設定​を確認します。 サーフェスは、プロファイルのpushNotificationDetailsのappIdに一致するパッケージ名でAndroid アプリをターゲットにする必要があります。
  3. サーフェスがそのアプリのFCM資格情報を使用していることを確認します。 プロファイルのトークン プラットフォームは"fcm"である必要があります。
  4. ペイロードのnotification_channel_idが、アプリで作成された通知チャネルと一致することを確認します。
accordion
​2. API ペイロード構造の検証

Android Live アクティビティフィールドをcontext.requestPayload.fcmの下に配置します。

単一の開始ペイロード:

code language-json
{
   "requestId": "your-request-id",
   "campaignId": "your-campaign-id",
   "recipients": [
      {
         "type": "aep",
         "userId": "your-device-ECID",
         "namespace": "ECID",
         "context": {
            "requestPayload": {
               "fcm": {
                  "notification_id": "flight-DL-321",
                  "timestamp": 1756984054,
                  "notification_channel_id": "live_updates_channel",
                  "priority": "PRIORITY_HIGH",
                  "event_type": "start",
                  "title": "Flight DL-321",
                  "body": "Boarding starts shortly",
                  "critical_text": "25 min",
                  "content_state": {
                     "custom_key_template_type": "progress",
                     "custom_key_journey_start": "DEL",
                     "custom_key_journey_progress": 10,
                     "custom_key_journey_end": "MUM"
                  }
               }
            }
         }
      }
   ]
}

サンプルのタイムスタンプを、現在のUnixのエポック時間(秒単位)に置き換えます。 content_state キーは例であり、アプリのスタイルプロバイダーと一致する必要があります。

ブロードキャストの場合は、audience.idでAPI トリガーのマーケティングキャンペーンを使用し、fcm オブジェクトをcontext.requestPayloadの下に配置します。 ターゲット デバイスが購読しているFCM トピックにtopic_nameを設定します。 開始、更新、終了の各イベントで、トピックとnotification_idを変更しないでください。 Android ブロードキャストペイロードの例を参照してください。

一般的なペイロードの問題:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3
フィールド 要件 共通の問題
campaignId アクティブなキャンペーン IDと一致する必要があります キャンペーン IDが間違っているか見つかりません
notification_id ライブアクティビティの開始、更新、終了イベントに対して同じ値を保持します 変更されたIDは別の通知をターゲットにしています
notification_channel_id Android アプリで作成されたチャネルと一致する必要があります チャネルの欠落または不一致
event_type "start"、"update"または"end"である必要があります 無効なライフサイクルイベント
timestamp エポック秒。同じインスタンスまたはブロードキャストトピックをターゲットとする各イベントについて厳密に増加する必要があります 古いタイムスタンプまたは同じタイムスタンプは無視されます
content_state アプリのスタイルプロバイダーでサポートされているフィールドを使用します サポートされていないキーまたは誤った値タイプ
userId / namespace 単一の配信の場合は、デバイスのECIDとECID名前空間を使用します プロファイル IDが一致しません
topic_name ブロードキャストの場合は、ターゲットデバイスが購読したトピックを使用します 不適切なトピックまたはデバイスが購読されていません

タイムスタンプとライフサイクルのチェック:

  • 開始、更新、終了イベントごとに、新しいtimestampを秒単位で使用します。 同じ秒内にリクエストが行われた場合でも、同じnotification_id (ブロードキャストの場合はtopic_name)の前の値よりも大きいことを確認します。
  • 古いタイムスタンプまたは同じタイムスタンプは無視されます。 キャッシュされたタイムスタンプを再利用しないでください。
  • オプションのwhen フィールドは、メッセージの順序ではなく、通知の表示時間を制御します。 適度に最新の状態に保ち、数秒で表現しましょう。
  • アクティビティを更新または終了するには、notification_idを変更せずにevent_typeを変更します。 Androidは、3つのライフサイクルイベントすべてに同じFCM登録トークンを使用します。個別の更新トークンは必要ありません。

終了イベントの却下:

event_type: "end"の場合、オプションでdismiss_afterを、完了したライブアクティビティを削除する前に表示し続ける秒数に設定します。 これはエポックタイムスタンプではなく、デュレーションです。

accordion
​3. ペイロードとAndroidの実装の整合性

アプリのスタイルプロバイダーは、ライブアクティビティ通知でのcontent_state値のレンダリング方法を決定します。

  1. メッセージングとライブアクティビティ拡張機能がアプリに統合されていることを確認します。
  2. content_stateの各フィールドが、期待される値の種類を含め、スタイルプロバイダーが処理するキーと一致することを確認します。
  3. title、bodyおよびcritical_textに、意図した表示テキストが含まれていることを確認してください。 critical_textはステータスバーチップに使用されています。
  4. 通知権限が付与され、notification_channel_idによって識別されたチャネルが存在することを確認します。

よくある間違い:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
問題 影響 修正
サポートされていないcontent_state キーまたは値タイプ コンテンツが見つからないか、正しくレンダリングされていません アプリのスタイルプロバイダーマッピングに一致
通知チャネルが見つからないか、一致しません 通知を目的のチャネルに投稿できません チャネルを作成し、その正確なIDを使用する
通知の権限が付与されていません ライブアクティビティが期待どおりに表示されない可能性があります POST_NOTIFICATIONSおよびPOST_PROMOTED_NOTIFICATIONS権限の確認
notification_idが変更されました 更新または終了は元の通知をターゲットにしません ライフサイクル全体を通してIDを変更しない
timestampより古い イベントは無視されます 最後に処理されたタイムスタンプよりも大きい値を使用する

詳細な例については、​ ライブアクティビティの作成を参照してください。

accordion
​4. Assuranceでテスト

接続されたAndroid テストデバイスでAssuranceを使用します。

  1. Assurance セッションを開き、FCM トークン登録が表示されていることを確認します。
  2. API呼び出しを実行してライブアクティビティを開始し、同じnotification_idでタイムスタンプを増やす更新イベントと終了イベントを送信します。
  3. 処理エラーまたは検証エラーについて、利用可能なSDK イベントとペイロードを確認します。 Android ペイロードでfcmと意図されたライフサイクル値が使用されていることを確認します。
  4. プロファイルの「イベント」タブで、一致する「message.feedback」イベントを調べます。 serviceProviderがfcmであることを確認し、配信エラーについてfeedbackStatus、errorCodeおよびerrorMessageを確認してください。
  5. 配信に成功してもライブアクティビティがレンダリングされない場合は、デバイス上のアプリログ、スタイルプロバイダーマッピング、通知権限、チャネル設定を調べます。

シナリオ 3:配信エラーとエラー分析 scenario-3-delivery-failures-and-error-analysis

[単一とブロードキャストの両方のユースケースに適用]{class="badge informative"}

このシナリオでは、以前のすべてのチェックに合格しました。

ライブアクティビティがまだ表示、更新、終了しない場合は、キャンペーンの処理、プッシュプロバイダー(iOSのAPNまたはAndroidのFCM)への配信、デバイスサイドの動作を確認します。

放送の場合:​件のレポートには、すべてのオーディエンスメンバーの指標が表示されます。 成功するプロファイルもあれば、失敗するプロファイルもあります。

キャンペーンレポートの確認 check-campaign-reports

IOSとAndroidの両方で、キャンペーンレポートから始めます。 Journey Optimizerが送信を試みたか、プロファイルを除外したか、エラーが発生したかを示します。

  1. ライブアクティビティキャンペーン​に移動します。

  2. 「レポート」ボタンをクリックします。

  3. 「すべての時間レポートを表示」を選択します。

  4. 配信の成功について理解するには、送信統計​指標を確認してください。

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    指標 意味 ビジネスの成長を促進するための
    ターゲティング オーディエンスに適格なプロファイルの数 テストプロファイルを含める必要があります
    送信数 試行されたプッシュ通知の合計 API呼び出しと一致する必要があります
    配信済み 報告された配信指標 Sendsと比較します。デバイスのレンダリングを個別に検証します。
    送信エラー 送信できなかったプッシュ通知 エラーの原因を調査する
    除外を送信 Adobe Journey Optimizerによって除外されたプロファイル プロファイルが除外されたかどうかを確認する
  5. 送信エラー > 0の場合は、エラーの理由 テーブルを確認してください。 プラットフォームのタブのステップ 1を使用して、エラーを解釈します。

  6. 除外を送信 > 0の場合、除外された理由 テーブルを確認します。

    table 0-row-3 1-row-3 2-row-3 3-row-3
    共通の除外 意味 解決策
    プロファイルがオプトアウトされました ユーザーが通知をオプトアウトしました プロファイルの同意ステータスを確認
    トークンをブロックリストに加える 無効としてマークされたトークン トークン(iOS)を再登録するか、現在のFCM トークン(Android)を転送するか、またはステータスを確認します
    プロファイルは対象外です プロファイルがキャンペーン条件を満たしていません キャンペーンオーディエンスのルールの確認
  7. 「ライブアクティビティライフサイクル」セクションを確認します。

    table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2
    指標 確認すべきこと
    リモートスタート API トリガー開始回数を表示する必要があります
    アップデート 更新イベント数を表示する必要があります
    終了 終了イベント数を表示する必要があります
    合計数 ライブアクティビティイベントの全体的な量

    これらの指標が0であるか、API呼び出しと一致しない場合は、以下のプラットフォーム固有のチェックを使用して、キャンペーン処理とプッシュプロバイダー配信を調査します。

詳しくは、​ ライブアクティビティキャンペーンレポートページ ​を参照してください。

プラットフォームの配信を確認する

iOS

事前確認

  • 検証済みの以前のシナリオ:

    • 正しいliveActivityPushNotificationDetailsのプロファイルが存在します。
    • キャンペーンサーフェスとアクティビティタイプが正しい。
    • API ペイロードは、現在のタイムスタンプで有効です。
    • 更新トークンは同期されます(単一の更新イベントと終了イベントのみ)。
  • API呼び出しが確認されました:

    • トリガーAPIがリクエストを受け入れました。 これは、配信やデバイスのレンダリングを確認するものではありません。
    • キャンペーン IDと受信者の詳細が正しい。

デバッグ手順

accordion
​1. 送信エラーの解釈

​ キャンペーンレポート ​に送信エラーが表示されない場合は、この手順をスキップしてください。 それ以外の場合は、Error Reasons テーブルのエラーを次の一般的なAPNs エラーと一致させます。

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
共通エラー 意味 解決策
無効なトークン プッシュトークンが無効または期限切れです デバイスからのライブアクティビティトークンの再登録
トークンが見つかりません プロファイルに関連付けられた有効なトークンがありません liveActivityPushNotificationDetailsが存在することを確認
APNsが拒否されました Apple プッシュ通知サービスはプッシュを拒否しました APNs証明書、バンドル ID、環境の確認
ネットワークタイムアウト APNに到達できない 一時的な問題。API呼び出しを再試行してください
accordion
​2. プロファイル内のメッセージフィードバックイベントの確認
  1. Journey Optimizerの​Customer > Profiles​に移動します。

  2. プロファイルを検索して開きます。

  3. 「イベント」タブを選択します。

  4. eventType = "message.feedback"のイベントをフィルタリングまたは検索します。

  5. ライブアクティビティのliveActivityIDとeventの種類に一致するフィードバックイベントを探します。

  6. 次のキーフィールドを確認します。

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
    フィールド 使用可能な値 意味
    feedbackStatus sent, error, denylist サービスプロバイダーからの配信の結果
    serviceProvider apns/apnsSandbox IOS Live アクティビティのAPNであるべき
    errorCode 数値コードまたはnull 失敗した場合のAPNs固有のエラーコード
    errorMessage エラーの説明またはnull 人間が判読可能なエラーメッセージ
  7. 場合feedbackStatus: "error":

    • 特定のAPNs エラーについては、errorCodeとerrorMessageを確認してください。
    • APNの一般的なエラーには、期限切れのトークン、無効な証明書、間違ったバンドル IDなどが含まれます。
  8. フィードバックイベントが見つからない場合:

feedbackStatusがsentの場合: Journey OptimizerはAPNに通知を渡しました。 これはデバイスのレンダリングを確認しません。 手順4でデバイス側のチェックを続行します。

accordion
​3. AssuranceのAPNへのライブアクティビティ配信を確認する
  1. Assurance セッションを開き、API呼び出し中もアクティブのままにします。

  2. API呼び出しを実行します(開始、更新、終了)。

  3. イベントリスト​で、ライブアクティビティ配信イベントを探します。

  4. APN プッシュ配信に関連するイベントを検索します。

  5. 次のインジケーターを確認します。

    • APNsへのプッシュリクエスト: AdobeがAppleのサーバーにプッシュを送信したことを確認します
    • APNs応答: APNがプッシュを承認したか拒否したかを示します
    • 配信ステータス:成功または失敗の兆候
  6. 問題が見つかった場合は、次の一般的なAPNの配信の問題を参照してください。

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    問題 Assuranceの症状 解決策
    APNs証明書の有効期限 認証エラー 新しいAPNs証明書の更新とアップロード
    環境が正しくない(開発環境と実稼動環境) トークンの不一致エラー 証明書がアプリのビルドタイプに一致することを確認する
    バンドル IDの不一致 無効なバンドル ID 証明書バンドル IDがアプリと一致することを確認する
    トークン期限切れ APNsからのInvalidToken エラー ライブアクティビティトークンの再登録
    レート制限 リクエストが多すぎます API呼び出し頻度の削減
accordion
​4. デバイス側の動作を確認する

Adobeが正常に配信されたが、デバイスにライブアクティビティが表示されない場合:

  • IOS デバイスログでライブアクティビティエラーを確認します。
  • アプリが前景または背景にあることを確認します(終了しません)。
  • デバイスにネットワーク接続があることを確認します。
  • 複数のデバイスをテストして、デバイス固有の問題を除外します。
  • IOSのバージョンが16.1以降であることを確認します。
accordion
​5. Adobe サポートへのエスカレーション

すべての手順を完了しても問題が解決しない場合は、Adobe カスタマーサポートにお問い合わせください。

必要な情報:

  • キャンペーン ID と名前
  • プロファイルの名前空間とID
  • API ペイロードからのliveActivityID
  • API呼び出しのタイムスタンプ
  • 送信統計、エラー理由、除外された理由を示すキャンペーンレポートのスクリーンショット
  • 関連するプロファイルイベント (liveActivity.updateToken、単一の更新/終了問題およびmessage.feedback)
  • Assuranceセッションの詳細と関連イベントのスクリーンショット
  • API リクエストペイロードと応答。資格情報とデバイストークンが墨消し済み
  • APNs証明書の詳細(有効期限、環境、バンドル ID)
Android

事前確認

  • 検証済みの以前のシナリオ:

    • 現在のFCM トークン、Android パッケージ名、platform: "fcm"を含む、有効なpushNotificationDetailsのプロファイルが存在します。
    • キャンペーンサーフェスは正しいAndroid アプリをターゲットとし、一致するFCM資格情報を使用します。
    • fcm ペイロードは有効で、そのtimestampは同じnotification_id (またはブロードキャストの場合はtopic_name)の前のイベントよりも新しいものです。
    • 開始、更新、終了イベントでは、同じnotification_idが使用されます。 単一イベントでは、同じFCM登録トークンを使用します。個別の更新トークンは必要ありません。
  • API呼び出しが確認されました:

    • API呼び出しにより、HTTP 202 (受け入れ済み)が返されました。 これにより、配信やデバイスのレンダリングではなく、リクエストの受け入れが確認されます。
    • キャンペーン IDと受信者の詳細が正しい。 ブロードキャストの場合は、オーディエンス IDとFCM トピックを確認します。

デバッグ手順

accordion
​1. 送信エラーの解釈

​ キャンペーンレポート ​に送信エラーが表示されない場合は、この手順をスキップしてください。 それ以外の場合は、Error Reasons テーブルのエラーを次の一般的なFCM エラーと一致させます。

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
共通エラー 意味 解決策
無効なトークンまたは未登録のトークン FCM トークンが無効であるか、アプリがアンインストールされました 現在のデバイストークンを取得し、MobileCore.setPushIdentifier(token)を使用して転送します
トークンが見つかりません プロファイルに関連付けられた有効なFCM トークンがありません pushNotificationDetailsに現在のトークンが含まれていることを確認します
送信者IDの不一致 別のFirebase プロジェクトに対してトークンが発行されました アプリのFirebase プロジェクトにFCM資格情報を合わせる
無効な引数 ペイロードがFCMによって拒否されました fcm ペイロード構造の検証
ネットワークタイムアウト FCMに到達できません 一時的な問題。API呼び出しを再試行してください
accordion
​2. プロファイル内のメッセージフィードバックイベントの確認
  1. Journey Optimizerの​Customer > Profiles​に移動します。

  2. プロファイルを検索して開きます。

  3. 「イベント」タブを選択します。

  4. eventType = "message.feedback"のイベントをフィルタリングまたは検索します。

  5. 調査中のキャンペーンおよびAPI呼び出しタイムスタンプのフィードバックイベントを探します。

  6. 次のキーフィールドを確認します。

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
    フィールド 使用可能な値 意味
    feedbackStatus sent, error, denylist サービスプロバイダーからの配信の結果
    serviceProvider fcm FCMはAndroid プッシュ配信を処理しました
    errorCode プロバイダーエラーコードまたはnull 配信に失敗した場合のFCM固有のエラーコード
    errorMessage エラーの説明またはnull 人間が判読可能なエラーメッセージ
  7. 場合feedbackStatus: "error":

    • errorCodeとerrorMessageを調べ、手順1から対応するFCM解決を適用します。
  8. フィードバックイベントが見つからない場合:

    • プッシュ通知が試行されていないか、フィードバックがまだ利用できない可能性があります。
    • プロファイルが​ キャンペーンレポート ​で除外されたかどうかを確認します。

feedbackStatusがsentの場合: FCMが通知を受け入れました。 これは、デバイスがライブアクティビティをレンダリングしたことを確認するものではありません。 手順4でデバイス側のチェックを続行します。

accordion
​3. AssuranceでのFCM配信の調査

接続されたAndroid テストデバイスでAssuranceを使用します。

  1. Assurance セッションを開き、API呼び出し中もアクティブのままにします。
  2. event_typeをstart、updateまたはendに設定してAPI呼び出しを実行します。
  3. イベント リストで、FCMへのリクエストとその応答に対して使用可能なプッシュ配信イベントを調べます。
  4. FCMがリクエストを受け入れたか拒否したかを確認し、報告されたエラーの詳細を確認します。
  5. 拒否されたリクエストの場合は、手順1のFCM エラーを使用して、トークン、Firebase プロジェクトの資格情報、ペイロードを確認します。 セッションでプロバイダーイベントが使用できない場合は、message.feedback件のイベントとキャンペーンレポートを使用します。
accordion
​4. デバイス側の動作を確認する

Adobeが正常に配信されたが、デバイスがライブアクティビティを表示または更新しない場合:

  • Android アプリログで、プッシュ処理とライブアクティビティのレンダリングエラーを調べます。
  • 通知が許可され、昇格された通知がcanPostPromotedNotifications()を使用して許可されていることを確認します。
  • POST_NOTIFICATIONSとPOST_PROMOTED_NOTIFICATIONSの権限が付与され、notification_channel_idによって識別されたチャネルが存在することを確認します。
  • timestampが最後に処理されたイベントより新しく、notification_idが変更されていないことを確認してください。 ブロードキャストの場合は、デバイスのtopic_nameへのサブスクリプションも確認してください。
  • アプリが強制停止されていないことを確認します。
  • デバイスにネットワーク接続があることを確認します。
  • 複数のデバイスをテストして、デバイス固有の問題を除外します。
  • デバイスでAndroid 16.1 (API レベル 36.1)以降が実行されており、アプリでtargetSdk 36が使用されていることを確認します。
  • content_state個のキーと値の種類がアプリのスタイルプロバイダーに一致することを確認してください。
accordion
​5. Adobe サポートへのエスカレーション

すべての手順を完了しても問題が解決しない場合は、Adobe カスタマーサポートにお問い合わせください。

必要な情報:

  • キャンペーン ID と名前
  • プロファイルの名前空間とID
  • API ペイロードのnotification_idおよびevent_type。ブロードキャストの場合は、topic_nameおよびオーディエンス IDも含まれます
  • API呼び出しのタイムスタンプ
  • 送信統計、エラー理由、除外された理由を示すキャンペーンレポートのスクリーンショット
  • 関連プロファイル message.feedback イベント (FCM エラーコードおよびメッセージを含む)
  • Assuranceセッションの詳細と関連イベントのスクリーンショット
  • API リクエストペイロードと応答。資格情報とデバイストークンが墨消し済み
  • Android パッケージ名、Firebase プロジェクトおよび送信者ID、FCM資格情報設定の詳細。秘密鍵は含まれません
  • Android OSのバージョン、デバイスモデル、通知権限のステータス、関連するアプリログ

シナリオ 4: ライブアクティビティ更新トークンが同期されない scenario-4-live-activity-update-token-not-synced

[単一ユースケースにのみ適用]{class="badge informative"}

[iOSにのみ適用]{class="badge positive"}

ライブアクティビティはデバイスで開始されますが、受け入れられるupdateまたはend個のAPI リクエストは、更新または却下されません。 考えられる原因は、インスタンスごとのライブアクティビティ更新トークン​がAdobe システムに同期されていないことです。 以下のチェックを完了して、トークンの同期が問題かどうかを確認します。

更新トークンについて

デバイスでライブアクティビティが開始されると、iOSは、その特定のライブアクティビティインスタンスに対して一意の更新トークンを生成します。 このトークンは、次の場合に必要です。

  • ライブアクティビティへの更新の送信
  • ライブアクティビティをリモートで終了する

各ライブアクティビティインスタンスには、それぞれ固有の更新トークンがあります。 Adobeでは、更新イベントと終了イベントを配信するためにこのトークンが必要です。

期待される動作

更新イベントと終了イベントを機能させるには、次の操作が必要です。

  1. デバイスでライブアクティビティが正常に開始されます。
  2. デバイスは、そのライブアクティビティインスタンスの更新トークンを生成します。
  3. Mobile SDKは、更新トークンをキャプチャし、Adobeに送信します。
  4. 更新トークンは同期され、Adobeのシステムに保存されます。
  5. 更新/終了に対する後続のAPI呼び出しは、このトークンを配信に使用します。

プリチェック:

  • ユーザー権限: デバイスでライブアクティビティが初めて開始されると、iOSにシステムプロンプト「[ アプリ名]でライブアクティビティの更新を提供しますか?」が表示されます。 更新トークンを生成して同期するには、ユーザー​が「許可」をタップする必要があります。 ユーザーが「許可しない」をタップした場合、更新トークンは作成されず、更新/終了リクエストは失敗します。 これはアプリごとに1回限りの権限です。
  • プロファイルとキャンペーンの検証: ​ シナリオ 1と​ シナリオ 2のチェックを完了して、プロファイル、トークン、キャンペーン設定が正しいことを確認します。

手順のデバッグ

​1. Assuranceで更新トークンの同期を確認する
  1. Assurance セッションを開きます。

  2. ライブアクティビティがデバイスで開始されたときに、セッションがアクティブであることを確認します。

  3. eventType = "liveActivity.updateToken"のイベントをフィルタリングまたは検索します。

  4. イベントを選択し、ペイロードを調べます。

    • token フィールドに有効な更新トークン文字列が含まれていることを確認します。
    • liveActivityIDがライブアクティビティインスタンスと一致することを確認します。
    • activityTypeがattributes-typeと一致することを確認します。
  5. イベントが見つからない場合:

    • 更新トークンは、SDKによって生成またはキャプチャされませんでした。
    • ユーザーがライブアクティビティ権限を付与したかどうかを確認します。
    • 実際にデバイスで正常に開始されたことを確認します。
    • 更新トークンを取得するために、モバイル SDKが適切に統合されていることを確認します。
  6. イベントが見つかった場合は、手順2に進みます。

​2. プロファイルイベントでの更新トークンの検証
  1. Journey Optimizerの​Customer > Profiles​に移動します。

  2. プロファイルを検索して開きます。

  3. 「イベント」タブを選択します。

  4. liveActivity.updateToken イベントを探します。

  5. イベントの詳細を確認します。

    • タイムスタンプが最新であることを確認します(ライブアクティビティが開始されたときに一致)。
    • tokenとliveActivityIDが存在することを確認します。
    • activityTypeが正しいことを確認します。
  6. プロファイルにイベントが見つからない場合:

    • 更新トークンイベントはまだプロファイルに取り込まれていない可能性があります。
    • 5~10分待って、もう一度確認してください。
    • 15分経過しても見つからない場合は、イベント取り込みの問題が発生している可能性があります。
  7. イベントが見つかった場合、更新トークンは同期されています。 手順3に進みます。

​3. Assuranceのライブアクティビティ配信イベントの確認
  1. Assurance セッションで、更新または終了API呼び出しを実行します。

  2. イベントリスト​で、ライブアクティビティ配信イベント(APNs プッシュイベント)を探します。

  3. 次を示すイベントを確認します。

    • プッシュ通知がAPNに送信されました。
    • APNからの応答(成功またはエラー)。
    • 配達確認。
  4. APNs配信イベントが存在する場合:プッシュ通知が送信されました。 それでもデバイスが更新されない場合、問題はデバイス側にある可能性があります(アプリがプッシュやネットワークの問題を処理しない場合など)。

  5. APNs配信イベントが見つからない場合:更新トークンが正しく保存されていないか、Adobe システムのプロファイルに関連付けられていない可能性があります。

  6. エラーイベントが存在する場合:特定のエラーの理由(無効なトークン、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 OK
実行が見つかり、正常に返されました
401未認証
ベアラートークンが見つからないか無効です
403禁止
有効なトークンだが権限が不十分
404が見つかりません
実行IDが存在しません

実行ステータス値

200件の応答のstatus フィールドは、実行の進行状況を示します。

ステータス
説明
PENDING
実行はキューに入れられていますが、まだ開始されていません
INPROGRESS
実行は処理中です
COMPLETED
実行が正常に完了しました
FAILED
実行でエラーが発生しました

200件の応答では、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)に適用されます。

iOS

プリチェック:

  • キャンペーンの種類:

    • キャンペーンがAPI トリガーマーケティングとして作成されていることを確認します(ブロードキャスト/オーディエンスベースのキャンペーンに必要)。
    • キャンペーン設定でオーディエンスが定義されていることを確認します。
  • プロファイルとトークンの検証:オーディエンスから複数のプロファイルをサンプルして、有効なliveActivityPushNotificationDetailsを持っていることを確認します。 詳細な検証手順については、​ シナリオ 1に従ってください。

デバッグ手順

accordion
​1. キャンペーンオーディエンス設定の確認
  1. Journey Optimizerで​ API Triggered Marketing Campaign ​を開きます。

  2. 「オーディエンス」セクションに移動して、次を確認します。

    • キャンペーン用にオーディエンスが選択されます。
    • オーディエンス IDは、API ペイロードで使用されるIDと一致します。
    • オーディエンスには、想定されるプロファイルが含まれています。
  3. 「アクション」セクションに移動します。

  4. ライブアクティビティ設定​を確認します。

    • IOS アプリの設定は、正しいバンドル IDを使用して設定する必要があります。
    • アクティビティの種類は、API ペイロードのattributes-typeと一致する必要があります。 例えば、ペイロードに"attributes-type": "AirplaneTrackingAttributes"が含まれている場合、キャンペーンはこの同じアクティビティタイプを指定する必要があります。
accordion
​2. ブロードキャスト API ペイロード構造の検証

ブロードキャストペイロードの構造は、単一キャンペーンとは異なります。 ペイロードが正しいブロードキャスト形式に従っていることを確認します。

ブロードキャストの必須フィールド:

code language-json
{
   "campaignId": "878a11d4-b519-47bd-8313-fecfee19857b",
   "audience": {
      "id": "8c3dbdea-2957-401f-acf0-3966fba1601e"
   },
   "context": {
      "requestPayload": {
         "aps": {
            "input-push-channel": "FEt0NgvLEfEAAOqA6AXdIQ==",
            "content-available": 1,
            "timestamp": 1771829292,
            "event": "start",
            "attributes-type": "AirplaneTrackingAttributes",
            "content-state": { ... },
            "attributes": { ... }
         }
      }
   }
}

一般的なペイロードの問題:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3
フィールド 要件 共通の問題
campaignId アクティブなマーケティングキャンペーン IDと一致する必要があります 間違ったキャンペーン IDまたはトランザクションキャンペーンの使用
audience.id AEPの既存オーディエンスと一致する必要があります 間違ったオーディエンス IDまたはオーディエンスが存在しない
input-push-channel ブロードキャストに必須 – このブロードキャストインスタンスの一意の識別子 liveActivityDataのchannelIDが見つからないか、一致しません
timestamp 常に最新のUnixのエポックタイムを秒単位にする必要があります 古い/キャッシュされたタイムスタンプの使用
event "start"、"update"または"end"である必要があります 無効なイベントタイプ
attributes-type キャンペーンアクティビティタイプに一致する必要があります 不一致またはタイプミス
content-available 1でなければなりません 値が見つからないか間違っています

重要なブロードキャスト固有のフィールド:

  • input-push-channel:

    • すべてのブロードキャストライブアクティビティに必要です。
    • この特定のブロードキャストインスタンスの一意の識別子として機能します。
    • オーディエンス内のすべてのプロファイルは、このチャネルにリンクされたライブアクティビティを受け取ります。
    • liveActivityData.channelIDのchannelIDと一致する必要があります(手順3を参照)。
    • Apple Developer PortalのappID用に作成する必要があります。
    • 特定のappID用に作成されたチャネルのみを、そのアプリのライブアクティビティのブロードキャストに使用できます。
  • audience.id:

    • Adobe Experience Platformで作成された有効なオーディエンスセグメントを参照する必要があります。
    • このオーディエンス内のすべてのプロファイルは、ライブアクティビティを対象としています。
    • オーディエンスをアクティブ化し、有効なliveActivityPushNotificationDetailsのプロファイルを含める必要があります。

常に最新のタイムスタンプを使用:

  • timestamp フィールドは、常にAPI呼び出しごとに現在のUnix エポック時間(秒単位)である必要があります。
  • この要件は、すべてのイベントタイプ(start、update、およびend)に適用されます。
  • 更新/終了に重要:古いタイムスタンプを使用すると、更新リクエストと終了リクエストが失敗します。
  • ブロードキャスト API呼び出しごとに新しいタイムスタンプを生成します。

任意フィールド:

  • dismissal-date:自動却下のUnixのエポックタイム(end イベントにのみ関連)
  • alert:通知用にtitleとbodyを含むオブジェクト

完全なAPI仕様については、Adobe Journey Optimizer Messaging API ドキュメント ​を参照してください。

accordion
​3. IOSを活用して、content-state、attributes、input-push-channelの連携を強化

ペイロードフィールドがiOS アプリのActivityAttributes実装と一致していること、およびinput-push-channelがliveActivityDataのchannelIDと一致していることを確認してください。

  1. IOS ActivityAttributesの定義を確認します。

カスタム ActivityAttributes構造体は、AdobeのLiveActivityAttributes プロトコルを実装する必要があります。

code language-swift
struct AirplaneTrackingAttributes: LiveActivityAttributes {
   public struct ContentState: Codable, Hashable {
      var journeyProgress: Int
   }

   // Adobe SDK requirement
   var liveActivityData: LiveActivityData

   // Your custom attributes
   var arrivalAirport: String
   var departureAirport: String
   var arrivalTerminal: String
}
  1. IOS フィールドをブロードキャスト API ペイロードにマッピングします。

すべてのイベントタイプにcontent-stateを含めます。 liveActivityData.channelIDを含むattributesを開始イベントにのみ含めます:

code language-json
{
   "aps": {
      "input-push-channel": "FEt0NgvLEfEAAOqA6AXdIQ==",
      "event": "start",
      "timestamp": 1771829292,
      "attributes-type": "AirplaneTrackingAttributes",
      "content-state": {
         "journeyProgress": 0
      },
      "attributes": {
         "arrivalAirport": "DEL",
         "departureAirport": "MUM",
         "arrivalTerminal": "T1",
         "liveActivityData": {
            "channelID": "FEt0NgvLEfEAAOqA6AXdIQ=="
         }
      }
   }
}

重要:input-push-channelはchannelID​と一致する必要があります

  • apsのルートのinput-push-channel値は、liveActivityDataのchannelIDと完全に一致する必要があります。
  • 上記の例では、両方の値は"FEt0NgvLEfEAAOqA6AXdIQ=="です。
  • このマッチングにより、ブロードキャストインスタンスがライブアクティビティデータにリンクされます。
  • 不一致が発生すると、配信エラーが発生します。

主要な検証ポイント:

  • すべてのイベントタイプに対して、content-stateにすべてのContentState フィールドを含めます。
  • 開始イベントに対してのみ、attributesにすべてのカスタム LiveActivityAttributes フィールドを含めます。
  • 開始イベントの場合、liveActivityData.channelIDはinput-push-channelと一致する必要があります。
  • フィールド名は大文字と小文字が区別され、正確に一致する必要があります。
  • データ型は一致する必要があります(String、Int、Bool、ネストされたオブジェクトなど)。
  • 更新/終了イベントの場合は、元の開始イベントと同じinput-push-channelを使用します。

よくある間違い:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3
問題 影響 修正
input-push-channelがありません ブロードキャストが機能しない 各ブロードキャストに一意のチャネル IDを追加する
input-push-channelがchannelIDと一致しません ライブアクティビティは開始されません 両方の値が同じであることを確認します
更新/終了に対して異なるinput-push-channel 更新/終了はライブアクティビティに到達しません ライフサイクル全体で同じチャネル IDを使用
liveActivityData.channelIDがありません ライブアクティビティはブロードキャストにリンクされません 開始イベントの属性にchannelIDを含める
開始イベントに必須フィールドがありません ライブアクティビティは開始されません IOS構造体からすべてのフィールドを追加する
間違ったフィールド名(タイプミス/ケース) フィールドが無視されたかエラーを解析しました IOSのフィールド名と正確に一致
更新/終了時の古いタイムスタンプ デバイスが更新/終了を無視 常に新しいタイムスタンプを生成
accordion
​4. Assuranceでテスト

Assuranceを使用して、APIの実行とペイロードの配信を検証します。

  1. オーディエンスの一部であるテストデバイスでAssurance セッションを開きます。

  2. ブロードキャスト API呼び出しを実行します。

  3. イベントリスト​で、次を探します。

    • キャンペーン実行イベント:
    • ライブアクティビティ配信イベント:
    • ペイロード検証エラーを示すエラーイベント。
  4. イベントペイロードを調べて確認します。

    • ペイロードが正しく処理されました。
    • input-push-channelが存在します。
    • 検証エラーは発生しませんでした。
    • ライブアクティビティは、オーディエンスメンバー向けにAPNに送信されました。
Android

プリチェック:

  • キャンペーンの種類: キャンペーンが​ API トリガーマーケティング ​であり、オーディエンスが定義されていることを確認します。
  • プロファイルとトークンの検証:​いくつかのオーディエンスプロファイルをサンプルして、pushNotificationDetailsとplatform: "fcm"が有効であることを確認します。 ​ シナリオ 1のAndroid チェックに従います。
  • トピック サブスクリプション: テスト デバイスが、ブロードキャストに使用されるFCM トピックにサブスクライブされていることを確認します。

デバッグ手順

accordion
​1. キャンペーンオーディエンス設定の確認
  1. Journey Optimizerで​ API トリガーマーケティングキャンペーン ​を開きます。

  2. 「オーディエンス」セクションに移動して、次を確認します。

    • キャンペーン用にオーディエンスが選択されます。
    • オーディエンス IDは、API ペイロードで使用されるIDと一致します。
    • オーディエンスには、想定されるプロファイルが含まれています。
  3. 「アクション」セクションに移動します。

  4. ライブアクティビティ設定​が正しいAndroid パッケージをターゲットとし、一致するFCM資格情報を使用していることを確認してください。 Androidでは、アクティビティの種類またはattributes-type フィールドは使用されていません。

accordion
​2. ブロードキャスト API ペイロード構造の検証

Androidの放送では、FCMのトピックを使用しています。 audience.idを含め、fcm オブジェクトを個別の受信者の下ではなくcontext.requestPayloadの下に配置します。

ブロードキャスト開始ペイロードの例:

code language-json
{
   "requestId": "your-request-id",
   "campaignId": "your-marketing-campaign-id",
   "audience": {
      "id": "your-audience-id"
   },
   "context": {
      "requestPayload": {
         "fcm": {
            "topic_name": "flight_DL321",
            "notification_id": "flight-DL-321",
            "notification_channel_id": "live_updates_channel",
            "timestamp": 1771829292,
            "priority": "PRIORITY_HIGH",
            "event_type": "start",
            "title": "Flight DL-321",
            "body": "Boarding starts shortly",
            "critical_text": "25 min",
            "content_state": {
               "custom_key_template_type": "progress",
               "custom_key_journey_start": "DEL",
               "custom_key_journey_progress": 10,
               "custom_key_journey_end": "MUM"
            }
         }
      }
   }
}

サンプルのタイムスタンプを、現在のUnixのエポック時間(秒単位)に置き換えます。 アプリのスタイルプロバイダーにcontent_state キーを適応させます。

一般的なペイロードの問題:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3
フィールド 要件 共通の問題
campaignId アクティブなマーケティングキャンペーン IDと一致する必要があります 間違ったキャンペーン IDまたはトランザクションキャンペーンの使用
audience.id キャンペーンで設定されたオーディエンスと一致する必要があります 間違ったオーディエンス IDまたはオーディエンスが見つかりません
topic_name 開始、更新、終了の間は空でない必要があります 見つからないトピックは形式が正しくないと拒否されます。変更されたトピックが更新/終了ターゲティングを解除します
notification_id アクティビティのライフサイクル全体で変更を加えない必要があります 別の通知をターゲットにする更新または終了
notification_channel_id アプリで作成された通知チャネルと一致する必要があります チャネルの欠落または不一致
timestamp エポック秒。同じトピックの前の値より大きい必要があります 古いタイムスタンプまたは同じタイムスタンプは無視されます
event_type "start"、"update"または"end"である必要があります 無効なライフサイクルイベント
content_state アプリのスタイルプロバイダーでサポートされているキーと値タイプを使用する必要があります サポートされていないキーまたは正しくないタイプ

重要なブロードキャスト固有のフィールド:

  • topic_name:​は、ターゲットデバイスが購読しているFCM トピックを識別します。 開始、更新、終了の各リクエストに、同じ空でない値を含めます。
  • audience.id:​は、Adobe Experience Platformでのキャンペーンのオーディエンスを識別します。 有効なpushNotificationDetailsのメンバーシップとサンプル プロファイルを確認してください。

タイムスタンプとオプションのフィールド:

  • 各イベントに対して新しいtimestampをエポック秒で生成し、同じトピックの最後の値よりも厳密に大きいことを確認します。 古い値または等しい値は無視されます。
  • whenは、オプションで通知の表示時間をエポック秒に設定します。 メッセージの順序は制御できません。
  • event_type: "end"の場合、dismiss_afterは、完了したアクティビティが削除されるまでの表示時間をオプションで指定します。 これはエポックタイムスタンプではなく、デュレーションです。

完全なAPI仕様については、Adobe Journey Optimizer Messaging API ドキュメント ​を参照してください。

accordion
​3. トピックの購読とアプリのレンダリングを確認する
  1. FirebaseMessaging.getInstance().subscribeToTopic(topic)を使用して、テストデバイスがtopic_nameで指定されたトピックを正確に購読していることを確認します。
  2. サブスクリプションが成功し、インストール済みのAdobe Live アクティビティ拡張機能でサポートされているtopic-subscription トラッキング APIを通じてアプリがレポートすることを確認します。
  3. 開始、更新、終了イベント全体でtopic_nameとnotification_idを変更しないでください。
  4. content_state個のキーと値の種類がアプリのスタイルプロバイダーと一致することを確認します。
  5. 通知権限が付与され、notification_channel_idがアプリで作成されたチャネルと一致することを確認してください。

よくある間違い:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
問題 影響 修正
topic_nameが見つからないか空です リクエストが形式が正しくないと拒否されました すべてのライフサイクルリクエストに空でないトピックを含める
デバイスがトピックを購読していません デバイスがブロードキャストイベントを受信しない トピックを正確に購読し、サブスクリプションの成功を確認する
変更されたトピックまたは通知ID 更新/終了は元のアクティビティをターゲットにしません ライフサイクル全体を通して両方の値を変更しない
サポートされていないcontent_state キーまたはタイプ コンテンツが見つからないか、正しくレンダリングされていません アプリのスタイルプロバイダーマッピングに一致
timestampより古い イベントは無視されます 最後に処理されたタイムスタンプよりも大きい値を使用する

その他のフィールドと例については、Android ブロードキャストペイロードの例を参照してください。

accordion
​4. Assuranceでテスト

オーディエンスの一部であり、ブロードキャストトピックにサブスクライブしているコネクテッドAndroidテストデバイスでAssuranceを使用します。

  1. ブロードキャスト API呼び出しを実行する前に、Assurance セッションを開きます。
  2. 同じtopic_nameとnotification_idを持ち、タイムスタンプを増やすリクエストを開始、更新、終了して送信します。
  3. Events リストで、使用可能なSDKおよび配信イベントを検査して、ペイロード処理エラーがないか確認します。
  4. ペイロードに、意図したfcm オブジェクト、topic_nameおよびevent_typeの値が含まれていることを確認します。
  5. キャンペーンレポートと利用可能なmessage.feedback件のイベントを確認して、FCM配信の結果を確認します。 Android serviceProvider値はfcmです。
  6. FCMがメッセージを受け入れてもデバイスがアクティビティをレンダリングしない場合は、トピックの購読、通知権限、チャネル設定、およびアプリログを調べます。 プロバイダーの受け入れにより、デバイスレンダリングが確認されない。

シナリオ 7: プロファイルがオーディエンス内にないか、古いオーディエンススナップショットです scenario-7-profile-not-in-audience-or-stale-audience-snapshot

[​ ブロードキャストのユースケースにのみ適用]{class="badge informative"}

このシナリオでは、キャンペーンとペイロードは正しく設定されますが、特定のプロファイルはライブアクティビティを受信しません。 これは通常、次の場合に発生します。

  • プロファイルは、キャンペーンにリンクされたオーディエンスのメンバーではありません。
  • オーディエンスはバッチオーディエンスで、プロファイルデータの古いスナップショットが含まれています。
  • プロファイルのプッシュトークンの詳細(liveActivityPushNotificationDetails iOSまたはpushNotificationDetails Android)は最近更新されましたが、まだオーディエンススナップショットに反映されていません。

このトラブルシューティングのシナリオは、オーディエンスベースのターゲティングを使用するブロードキャストキャンペーンに特に適用されます。

オーディエンスの評価について

Adobe Experience Platformでは、プロファイルの更新がオーディエンスに反映されるタイミングを決定するために、様々なオーディエンス評価方法を使用します。

メソッド
評価頻度
データの鮮度
最適な用途
バッチ
1日1回(予定)
最大で24時間古くなる可能性があります
多数のオーディエンスに対応(時間的制約なし)
ストリーミング
リアルタイム(プロファイル変更時)
プロファイルを更新するためにほぼリアルタイム
時間的制約があり、プロファイルの更新が必要
Edge
エッジ位置でのリアルタイム
ほぼリアルタイム
Edgeによって評価されたユースケース

事前確認

  • キャンペーンとペイロードの検証:

    • プラットフォームの​ シナリオ 6のチェックを完了して、キャンペーンとペイロードが正しいことを確認します。
    • API ペイロードのaudience.idがキャンペーン設定と一致することを確認します。
  • プロファイルが存在します: プロファイルが有効なプッシュトークンの詳細を含むAdobe Experience Platformに存在することを確認します。 ​ シナリオ 1のチェックに従います。 必要な情報は、プラットフォームによって異なります。

    • iOS: liveActivityPushNotificationDetailsに有効なトークンが含まれています。
    • 現在のFCM登録トークンを含む​Android: pushNotificationDetails、Android パッケージ名に一致するappId、platform: "fcm"およびdenylisted: false。
  • トピックサブスクリプション (Androidのみ): デバイスがtopic_nameで指定された正確なFCM トピックにサブスクライブされていることを確認します。 オーディエンスメンバーシップは、デバイスをトピックにサブスクライブしません。 ​ シナリオ 6のAndroid トピック購読チェックに従います。

デバッグ手順

​1. プロファイルがオーディエンスにあることを確認

まず、ライブアクティビティを受け取るプロファイルが実際にオーディエンスの一部であるかどうかを確認します。

  1. Adobe Experience Platformの​ Audiences ​に移動します。

  2. キャンペーンのaudience.idを使用してオーディエンスを検索し、開きます。

  3. 参照​または​ サンプルプロファイル ​をクリックして、オーディエンスメンバーを表示します。

  4. 名前空間とID値を使用して、テストプロファイルを検索します。

  5. オーディエンスにプロファイルが見つからない場合:

    • プロファイルがオーディエンスの基準またはセグメントルールを満たしていません。
    • オーディエンス定義を確認して、メンバーシップ要件を理解します。
    • プロファイルデータまたはオーディエンス定義を更新して、プロファイルを含めます。
    • オーディエンスの評価が完了するのを待ちます(手順2を参照)。
  6. オーディエンスにプロファイルが見つかった場合: ステップ 2に進んで、データの鮮度を確認します。

​2. オーディエンスの評価の種類とスケジュールを確認する

オーディエンスがバッチ、ストリーミング、エッジのどの評価を使用しているのかを特定し、データの鮮度を判断します。

note
NOTE
Audience evaluationでは、プッシュトークンを登録したり、Android デバイスをFCM トピックに登録したりすることはありません。 オーディエンススナップショットに含まれるプロファイルデータのみが決定されます。
  1. オーディエンスの詳細 ページで、評価方法​を確認します。

    • バッチ:毎日1回、スケジュールに従って評価されます。
    • ストリーミング: プロファイルの更新時にリアルタイムで評価されます。
    • Edge: リアルタイムでエッジの場所で評価されました。

評価方法に基づく適切なトラブルシューティング手順に従います。

オーディエンスがバッチ評価を使用している場合:

  1. バッチオーディエンスの制限について:

    • バッチオーディエンスは、1日に1回(通常は毎晩)評価されます。
    • オーディエンスのスナップショットは、最大で24時間前になる場合があります。
    • プロファイルがプッシュトークンの詳細(liveActivityPushNotificationDetails iOSまたはpushNotificationDetails Android)を最近登録または更新した場合、更新された詳細が現在のスナップショットにない可能性があります。
    • プロファイルの更新は、次のバッチ評価まで反映されません。
  2. 最後の評価が発生した際の確認:

    • オーディエンスの詳細で、最終評価 タイムスタンプを探します。
    • このタイムスタンプの後にプロファイルのプッシュトークンの詳細が更新された場合、オーディエンススナップショットには現在のトークンは含まれません。
  3. 古いデータを解決:

    1. オプション 1:スケジュールされたバッチ評価を待つ

      • 次のバッチ評価には、更新されたプロファイルデータが含まれます。
      • これは1日に1回自動的に行われます。
      • 緊急性の低いシナリオに最適:
    2. オプション 2: オンデマンドのオーディエンス評価のトリガー

      1. AEPの​ Audiences ​に移動します。
      2. オーディエンスを選択します。
      3. 今すぐ評価​または​ オンデマンドでアクティベート ​をクリックします。
      4. 評価が完了するまで待ちます(オーディエンスサイズによっては数分から数時間かかる場合があります)。
      5. プロファイルがオーディエンススナップショットのデータを更新したことを確認します。
      6. ブロードキャスト API呼び出しを再試行します。

オーディエンスがストリーミング評価を使用している場合:

  1. ストリーミングオーディエンスの動作について:

    • ストリーミングオーディエンスは、プロファイルの更新が発生したときにリアルタイムで評価されます。
    • 新しいプロファイル: セグメントの条件を満たす場合は、作成後すぐに選定します。
    • 更新されたプロファイル:更新された直後に選定または選定を解除しました。
    • 既存の変更されていないプロファイル:更新が発生しない限り、再評価されません。
  2. 問題の特定:

    • プロファイルが既に存在し、セグメント条件を満たしていても、そのプロファイルに更新が発生しない場合は、新しく作成されたストリーミングオーディエンスに追加できない可能性があります。
    • プロファイルは、トリガーの再評価に対する更新(属性の変更)を受け取る必要があります。
  3. 問題の解決:

    • 新しいプロファイルの場合:条件が満たされると、自動的に選定されます。 行動は必要ありません。

    • 最近更新されていない既存のプロファイルの場合:

      • プロファイルのマイナーアップデートを行います(例えば、タイムスタンプフィールドのアップデート)。
      • ストリーミング評価がトリガーされ、プロファイルがオーディエンスに追加されます。
      • 代替案:既存のプロファイルにバッチオーディエンスまたはエッジオーディエンスを使用します。

詳細設定:データセットのクエリによるデバッグ advanced-debugging-via-dataset-queries

NOTE
これらのクエリは、iOSとAndroidの両方に適用されます。 両方のプラットフォームで、AJO Message Feedback Event Dataset​のmessage.feedback イベントが使用され、同じスキーマパスとfeedbackStatus値が以下に示されています。
sent ステータスは、プッシュプロバイダーへの引き継ぎを示します。iOSのAPNまたはAndroidのFCMです。

Audience:開発者およびデータエンジニア。 Adobe Experience Platform Query Service経由でJourney Optimizer データセットにSQL アクセスする必要があります。

使用するタイミング: Assuranceは、アクティブなセッション中に接続されたテストデバイスに限定されます。 データセットクエリを使用して、本番環境のエンドユーザーが報告した問題を調査したり、ファクトの後に配信履歴を監査したりできます。 このデータセットは、Assurance プラグインと同じライフサイクルおよび障害情報を公開します。

データセットの検索

  1. Journey Optimizerで、Data Management > Datasets​に移動します。

  2. 「システムデータセットを表示」トグルを有効にし、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
NOTE
identityMapは構造化MAP タイプであり、文字列ではありません。 上記の配列と構造体アクセサーの構文を使用します。 LIKEなどの文字列関数は、DATATYPE_MISMATCH エラーを返します。
メッセージフィードバックイベントデータセットは、ECIDのみをidentityMapに格納します。 影響を受けるプロファイルがECIDではなくカスタム名前空間で識別される場合は、最初にECIDを解決します。AEPの​ Profiles ​に移動し、カスタム名前空間とID値を使用してプロファイルを検索し、プロファイルのIDの詳細からECIDを取得します。 上記のクエリでそのECID値を使用します。

feedbackStatus値

値
意味
sent
プッシュプロバイダー(iOSのAPN、AndroidのFCM)に引き継がれます。デバイスレンダリングは確定しません(以下を参照)。
error
配信エラー – failure_reasonで詳細を確認してください
denylist
トークンが無効、登録解除、またはブロックリストに加えるされています(アンインストールされたアプリなど)。デバイストークンを再登録します
exclude
送信前にプロファイルを除外(トークンが欠落している、同意の問題またはタイポロジルール)
delay
配信の遅延。再試行されます
duplicate
繰り返し送信は、配信レベルの重複排除によって抑制されました
bounce
プッシュプロバイダーがバウンスした配信(トークンに対して返されたハードエラーなど)
NOTE
la_event フィールドの場合、最初の配信イベントのデータセット レコードはstartではなくremotestartです。 イベントタイプでクエリを実行する際に、それに応じてフィルタリングします。

送信済みステータスの解釈 interpreting-the-sent-status

IMPORTANT
8時間のライブアクティビティ期間の制限は、AndroidではなくiOSにのみ適用されます。

sentのfeedbackStatusは、Journey Optimizerがプッシュプロバイダー(iOSのAPN、AndroidのFCM)に通知を正常に渡したことを確認します。 ライブ アクティビティがデバイス上でレンダリングされたことを​ not ​が確認します。

プッシュプロバイダーへのハンドオフ後、データセットでデバイスレンダリングが確認されない。 OSの制限、プロバイダーとデバイス間のネットワークドロップ、iOSで達している8時間のライブアクティビティ期間の制限など、デバイス側のエラーは、データセットから観察できません。

feedbackStatusがsentであるが、デバイスにライブアクティビティが表示されない場合は、Journey Optimizer配信パイプライン外の動作を調査します。 AssuranceまたはAndroidのlogcatを含むアプリレベルのログを使用して、デバイスサイドの動作を診断します。

AI Knowledge Reference

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.feedback events (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, including appId, platform, and denylisted (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 update and end events. 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 SDK LiveActivityAttributes protocol; the iOS examples include liveActivityID for unitary or channelID for broadcast (product-specific)

  • channelID: The value in liveActivityData.channelID; must exactly match input-push-channel for iOS broadcasts (product-specific)

  • attributeType / attributes-type: The name of the Swift ActivityAttributes struct; stored as attributeType (camelCase) on the profile and sent as attributes-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, and attributeType (product-specific)

  • APS payload: The iOS JSON structure sent under context.requestPayload.aps, containing the event, content-state, and control fields; attributes includes 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 iOS input-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 timestamp must strictly increase for every event with the same notification_id (or topic_name for 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_uri are 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-channel must exactly match liveActivityData.channelID; a mismatch causes delivery failures.

  • For iOS, a feedbackStatus of sent confirms 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 per notification_id or topic_name) ≠ “when” (Android: optional notification display time that does not control ordering)
  • Do not confuse: la_event value “remotestart” (recorded in the dataset for initial delivery) ≠ “start” (the event field 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 executionId is prefixed with HUOC-, and the status field returns PENDING, INPROGRESS, COMPLETED, or FAILED.
  • Q: What does a feedbackStatus of sent mean 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).
recommendation-more-help
journey-optimizer-help