ライブアクティビティのトラブルシューティング troubleshoot-mobile-live

Adobe Journey Optimizerのライブアクティビティにより、iOSのロック画面やダイナミック諸島でリアルタイムかつダイナミックに更新できます。 トリガーおよび管理できるのは、API トリガーキャンペーンのみです。

ユースケースの種類:

  • 単一:個別にターゲティングされたトランザクション (API トリガーのトランザクションキャンペーン)
  • ブロードキャスト:オーディエンスをターゲットにした一括配信(API トリガーによるマーケティングキャンペーン)

ライブアクティビティに関する頻繁な課題は、ライブアクティビティをトリガーまたは更新するAPI呼び出しが​ 成功したレスポンス(200 OK) ​を返すが、ライブアクティビティがユーザーのデバイスに表示または更新されない場合です。 API確認と実際のデバイス動作の間のこの断絶は、配信パイプラインの複数のポイントで発生する可能性があります。 このガイドでは、API リクエストの検証からデバイスのレンダリングに至るまで、各ステージを調べて、配信が失敗している場所を特定するための体系的なトラブルシューティングのアプローチを提供します。

前提条件

トラブルシューティングを行う前に、次の項目を確認してください。

Assurance セッションの設定

Assurance セッション​を設定して、SDK イベントをキャプチャし、配信パイプラインを調べます。 Assuranceでは、次の項目を可視化できます。

  • Edge Networkのリクエストと応答
  • プロファイル選定イベント
  • プッシュトークン登録
  • ライブアクティビティライフサイクルイベント

Assuranceの設定方法については、Adobe Experience Platform Assurance ドキュメント ​を参照してください。

メモ: iOS Live アクティビティの場合、アプリが物理的なiOS デバイス(iOS 16.1以降)またはXcode Simulator (iOS 16.1以降)で動作していることを確認します。

API トリガーキャンペーンの詳細の収集

Journey OptimizerでAPI Triggered Campaignに移動し、次を取得します。

  • キャンペーン名
  • URLまたはキャンペーンプロパティで見つかったキャンペーン ID
  • キャンペーンバージョン(該当する場合)
  • サーフェス設定、ライブアクティビティに使用されるiOS アプリサーフェス
API リクエスト情報の収集

ライブアクティビティをトリガーするAPI呼び出しを行う際に、次を保存します。

  • プロファイル識別子やライブアクティビティデータを含むAPI リクエストペイロード
  • ステータスコード、メッセージ ID、リクエスト IDを含むAPI応答
  • APIが呼び出されたときのタイムスタンプ
  • 使用されているエンドポイント (例:/campaign/{CAMPAIGN_ID}/execute
テストプロファイルの特定

API リクエストから、次を取得します。

  • プロファイル名前空間(例:ECID、電子メール、顧客ID)
  • API呼び出しで使用されるプロファイル ID

Adobe Experience Platformでこのプロファイルを検索できることを確認します。 プロファイルを検索する方法については、Experience Platform ドキュメント ​を参照してください。

デバイスとアプリ情報

テストデバイスから以下を収集します。

  • デバイスモデル(例:iPhone 14 Pro)
  • iOS版
  • アプリバンドル識別子
  • APNs プッシュトークン
  • テスト時のネットワーク接続ステータス

一般的なシナリオ

プロファイルまたはプッシュトークンの問題 profile-issue

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

APIはHTTP 200を返しますが、Live アクティビティは表示されません。 一般的な原因:

  • Adobe Experience Platformにプロファイルが存在しません。
  • ライブアクティビティプッシュトークンがプロファイルに同期されていません。
  • ライブアクティビティのプッシュの詳細は同期されますが、誤った設定(例:appIdまたはattributeType)が含まれています。

ブロードキャストのユースケースに関する注意:オーディエンス内の一部のプロファイルにトークンがない場合、それらのプロファイルのみがライブアクティビティを受信できません。 トークンの問題を診断するために、オーディエンスからいくつかのプロファイルをサンプルします。 これは、リモート開始イベントにのみ適用され、更新イベントや終了イベントには適用されません。

事前確認

  • iOS アプリの要件:

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

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

デバッグ手順

​1. Adobe Experience Platformにプロファイルが存在することを確認する
  1. Journey Optimizerで、Customer > Profiles​に移動します。
  2. API リクエストの名前空間とID値を使用して検索します。
  3. プロファイルが見つからない場合は、プロファイルが存在しないか、取り込みが完了していません。 プロファイルを作成するか、取り込みを待ってからライブアクティビティをトリガーします。
  4. プロファイルが見つかった場合は、以下の手順2に進んで、プッシュトークンが同期されているかどうかを確認します。
​2. ライブアクティビティプッシュトークンが同期されているかどうかを確認する

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

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

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

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

イベントが見つからない場合、モバイルアプリがMessaging.registerLiveActivityを正しく呼び出していません。 SDKとの連携を修正する必要があります。

​3. プロファイル上のトークンの詳細の検証
  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分待ちます。

キャンペーン設定とペイロードの問題 payload-issues

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

有効なトークンを持つプロファイルは存在しますが、ライブアクティビティは表示されません。 これは、次の原因で発生する可能性があります。

  • サーフェスまたはチャネルの設定が正しくありません。
  • 誤ったAPI ペイロード構造。
  • content-stateattributesはiOS ActivityAttributesの実装と一致しません。
  • 古いtimestamp (更新/終了に重要)。

ブロードキャストのユースケースに関する注意: キャンペーンは​API トリガーのマーケティング (トランザクションではない)である必要があります。 ペイロードは、個別のaudienceではなくprofileを使用します。 ブロードキャスト固有のペイロード構造についてはこのセクション ​を参照し、完全なAPI仕様についてはAdobe Developer ドキュメント ​を参照してください。

事前確認

  • Campaignは​API トリガーのトランザクション (単一)または​API トリガーのマーケティング (ブロードキャスト)であり、高スループット オプションは​ not ​有効にする必要があります。ライブアクティビティと互換性がありません。
  • プロファイルが存在し、上記の​ シナリオ ​を使用してトークンが正しく同期されていることを確認します。

デバッグ手順

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

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

  • timestamp フィールドは、各API呼び出しが行われた時点で​ always ​が​現在のUnix エポックタイム (秒単位)である必要があります。
  • これは、すべてのイベントタイプ​に適用されます:startupdate特にend
  • 更新/終了リクエストに対する影響:古いタイムスタンプまたは古いタイムスタンプを使用すると、更新リクエストと終了リクエストが失敗するか、デバイスによって無視されます。
  • 以前のリクエストのタイムスタンプを​ NOT ​で再利用するか、キャッシュされた値を使用します。
  • API呼び出しごとに新しいタイムスタンプを生成します。

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

  • requestId: トラッキング用の一意のID (推奨)。
  • alert: titlebodyを持つオブジェクト (更新に注意を引くために便利です)。

についてdismissal-date:

  • Unix エポック時間(秒)を含むオプションフィールド。
  • event: "end"​の場合にのみ関連します。
  • ライブアクティビティをデバイスから自動的に削除するタイミングを指定します。
  • エンドイベントで指定しない場合、ユーザーがアクティビティを却下するまでライブアクティビティは表示されたままになります。
  • 将来のタイムスタンプである必要があります(timestamp以降)。
​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のみを含める
更新/終了時の古いタイムスタンプ デバイスで更新/終了が無視されました 常に新しいタイムスタンプを生成

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

​4. Assuranceでのテスト

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

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

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

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

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

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

配信エラーとエラー分析

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

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

ただし、ライブアクティビティは、期待どおりに表示、更新、終了されません。 この問題は、Adobe配信システムレベルまたはプッシュ通知サービスプロバイダー(APN)で発生する可能性があります。

ブロードキャストのユースケースに関するメモ:すべてのオーディエンスメンバーに関する指標をレポートに表示します。 成功するプロファイルもあれば、失敗するプロファイルもあります。

事前確認

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

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

    • API呼び出しでHTTP 200 (成功)が返されました
    • キャンペーン IDと受信者の詳細が正しい

デバッグ手順

​1. キャンペーンレポートの確認
  1. ライブアクティビティキャンペーン​に移動します。

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

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

  4. 次のセクションを確認します。

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

      table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
      指標 意味 ビジネスの成長を促進するための
      ターゲット オーディエンスに適格なプロファイルの数 テストプロファイルを含める必要があります
      送信数 試行されたプッシュ通知の合計 API呼び出しと一致する必要があります
      配信済み デバイスへの正常な配信 送信数と比較して成功率を確認する
      送信エラー 送信できなかったプッシュ通知 大きい数値
      除外を送信 Adobe Journey Optimizerによって除外されたプロファイル プロファイルが除外されたかどうかを確認する
    2. 送信エラーが0を超える場合は、エラーの理由 テーブルで特定のエラーコードとメッセージを確認します。

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

      table 0-row-3 1-row-3 2-row-3 3-row-3
      共通の除外 意味 解決策
      プロファイルがオプトアウトされました ユーザーが通知をオプトアウトしました プロファイルの同意ステータスを確認
      トークンをブロックリストに加える 無効としてマークされたトークン トークンの再登録またはブロックリストステータスの確認
      プロファイルは対象外です プロファイルがキャンペーン条件を満たしていません キャンペーンオーディエンスのルールの確認

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

​2. プロファイル内のメッセージフィードバックイベントの確認
  1. Journey Optimizerの​Customer > Profiles​に移動します。

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

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

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

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

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

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

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

    • プッシュ通知が試行されていない可能性があります
    • 上記の手順1で説明したように、キャンペーンレポートでプロファイルが除外されたかどうかを確認します。
​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呼び出し頻度の削減
​4. 追加の診断チェックに進む
  1. Campaign レポートのライブアクティビティライフサイクル指標を確認します。

    キャンペーンレポートで、ライブアクティビティライフサイクル セクションを確認します。

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

    これらの指標が0であるか、API呼び出しに一致しない場合は、AdobeとAPNの間に配信の問題があります。

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

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

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

必要な情報:

  • キャンペーン ID と名前
  • プロファイルの名前空間とID
  • API ペイロードからのliveActivityID
  • API呼び出しのタイムスタンプ
  • スクリーンショット:
  • キャンペーンレポート(送信統計、エラー理由、除外された理由)
  • プロファイルイベント (liveActivity.updateToken, message.feedback
  • 配信イベントを示すAssuranceのセッション
  • 完全なAPI リクエストペイロード
  • APNs証明書の詳細(有効期限、環境、バンドル ID)

単一に固有のシナリオ

ライブアクティビティ更新トークンが同期されていません token-not-synced

ライブアクティビティはデバイスで正常に開始されますが、後続のupdateまたはend API呼び出し(HTTP 200を返します)はライブアクティビティの更新または却下に失敗します。 これは、ライブアクティビティ更新トークン​がAdobeのシステムに正しく同期されていない場合に発生します。

更新トークンについて

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

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

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

期待される動作

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

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

プリチェック:

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

デバッグ手順

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  6. エラーイベントが存在する場合:特定のエラーの理由(無効なトークン、APNが拒否されたなど)について、エラーの詳細を調べます。

放送固有のシナリオ

ブロードキャストキャンペーンの設定とペイロードの問題 broadcast-config

この節では、ブロードキャストライブアクティビティに固有のトラブルシューティングのシナリオについて説明します。これらのシナリオでは、単一キャンペーンとは異なるデバッグアプローチが必要です。

プロファイルに有効なトークンが含まれていても、ライブアクティビティがオーディエンスメンバーに表示されない、更新されない、または想定どおりに動作しない場合、問題は通常、次のいずれかに起因します。

  • キャンペーンがAPI トリガーマーケティングとして設定されていません。
  • API ペイロードで正しくないブロードキャスト構造が使用されています(audienceまたはinput-push-channelがありません)。
  • content-stateattributes フィールドがiOS ActivityAttributesの実装と一致しません。
  • Apple Developer Portalでinput-push-channelが正しく作成されませんでした。

このトラブルシューティングのシナリオは、ブロードキャストキャンペーンのすべてのライブアクティビティイベント(startupdate、およびend)に適用されます。

プリチェック:

  • キャンペーンタイプ:

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

デバッグ手順

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

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

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

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

    • IOS アプリの設定は、正しいバンドル IDを使用して設定する必要があります。
    • アクティビティの種類は、API ペイロードのattributes-typeと一致する必要があります。 例えば、ペイロードに"attributes-type": "AirplaneTrackingAttributes"が含まれている場合、キャンペーンはこの同じアクティビティタイプを指定する必要があります。
​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": "update",
         "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 ブロードキャストに必須 – このブロードキャストインスタンスの一意の識別子 channelIDliveActivityDataが見つからないか、一致しません
timestamp 常に最新のUnixのエポックタイムを秒単位にする必要があります 古い/キャッシュされたタイムスタンプの使用
event "start""update"または"end"である必要があります 無効なイベントタイプ
attributes-type キャンペーンアクティビティタイプに一致する必要があります 不一致またはタイプミス
content-available 1でなければなりません 値が見つからないか間違っています

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

  • input-push-channel

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

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

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

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

任意フィールド:

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

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

​3. iOSの導入により、content-state、attributes、input-push-channelを連携

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

  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 ペイロードにマッピングします。

すべてのイベントに対して、attributescontent-stateの両方を含めます。

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-channelchannelID​と一致する必要があります

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

主要な検証ポイント:

  • すべてのイベントタイプに対して、ContentStateにすべてのcontent-state フィールドを含めます。
  • 開始イベントに対してのみ、LiveActivityAttributesにすべてのカスタム attributes フィールドを含めます。
  • 開始イベントの場合、liveActivityData.channelIDinput-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-channelchannelIDと一致しません ライブアクティビティは開始されません 両方の値が同じであることを確認します
更新/終了に対して異なるinput-push-channel 更新/終了はライブアクティビティに到達しません ライフサイクル全体で同じチャネル IDを使用
liveActivityData.channelIDがありません ライブアクティビティはブロードキャストにリンクされません 開始イベントの属性にchannelIDを含める
開始イベントに必須フィールドがありません ライブアクティビティは開始されません IOS構造体からすべてのフィールドを追加する
間違ったフィールド名(タイプミス/ケース) フィールドが無視されたかエラーを解析しました IOSのフィールド名と正確に一致
更新/終了時の古いタイムスタンプ デバイスが更新/終了を無視 常に新しいタイムスタンプを生成
​4. Assuranceでのテスト

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

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

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

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

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

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

プロファイルがオーディエンスまたは古いオーディエンスのスナップショットにありません

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

  • プロファイルは、キャンペーンにリンクされたオーディエンスのメンバーではありません。
  • オーディエンスはバッチオーディエンスで、プロファイルデータの古いスナップショットが含まれています。
  • プロファイルのライブアクティビティトークンは最近追加されましたが、オーディエンススナップショットにはまだ反映されていません。

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

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

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

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

プリチェック:

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

    • このシナリオ ​のチェックを完了して、キャンペーンとペイロードが正しいことを確認します。
    • API ペイロードのaudience.idがキャンペーン設定と一致することを確認します。
  • プロファイルが存在します:有効なliveActivityPushNotificationDetailsのプロファイルがAEPに存在することを確認します。

デバッグ手順

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

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

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

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

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

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

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

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

​2. オーディエンスの評価方法とスケジュールの確認

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

  1. オーディエンスの詳細 ページで、評価方法​を確認します。

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

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

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

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

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

    • オーディエンスの詳細で、最終評価 タイムスタンプを探します。
    • プロファイルのliveActivityPushNotificationDetailsがこのタイムスタンプの後に更新された場合、オーディエンスには古いデータがあります。
  3. 古いデータを解決:

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

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

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

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

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

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

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

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

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

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