常見的上線活動疑難排解案例 troubleshoot-mobile-live

在此頁面上:​系統化診斷您的Live活動無法出現、更新或結束的原因,以便您解決單一和廣播使用案例中的設定檔權杖、行銷活動設定、裝載和傳遞問題。

尋找您的情境 find-your-scenario

症狀或工作
在這裡開始
已上線活動未開始
案例1:設定檔和權杖,然後案例2:行銷活動和承載
設定檢查通過,但傳送失敗
案例3:傳遞失敗
iOS單一「上線」活動開始,但未更新或結束
案例4:更新權杖同步
Android即時活動開始,但未更新或結束
案例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、平台或iOS attributeType。

對於廣播:​將幾個對象設定檔取樣以檢查權杖註冊。 在iOS上,設定檔權杖檢查適用於遠端開始事件,而不是頻道式更新或結束事件。 在Android上,也使用案例6來驗證裝置的FCM主題訂閱。

驗證設定檔是否存在

對於iOS和Android,請開始使用此檢查。 如果是廣播,請對多個對象設定檔重複此步驟。

  1. 在Journey Optimizer中,導覽至​客戶 > 設定檔。
  2. 使用API請求的名稱空間和身分值來搜尋。
  3. 如果找不到設定檔,表示設定檔不存在或內嵌尚未完成。 建立設定檔,或等待內嵌完成再觸發上線活動。
  4. 如果找到設定檔,請繼續檢查您平台的Token。

檢查推播權杖

iOS

預先檢查

  • iOS應用程式需求:

    • iOS 16.1+
    • 在Info.plist中將NSSupportsLiveActivities設定為YES
    • ActivityAttributes已正確實作。
  • 行動SDK整合:

    • Adobe Experience Platform Mobile SDK (傳訊SDK 5.11.0+)
    • 使用Live活動推播權杖實作及呼叫Messaging.registerLiveActivities。

偵錯步驟

accordion
​1. 檢查即時活動推播權杖是否已同步

您可以使用Assurance來驗證Token註冊:

  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. 驗證設定檔上的Token詳細資料
  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不相符
attributeType 必須完全符合Swift ActivityAttributes結構名稱(區分大小寫) 拼寫錯誤或不正確的結構名稱
platform 必須為"apns"或"apnsSandbox" 錯誤的平台值
denylisted 必須為false 權杖標示為無效或使用者選擇退出
token 有效的APN推播權杖 Token已過期或重新安裝應用程式

如果任何欄位不正確,請更新行動應用程式,使用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與「傳訊」和「上線活動」擴充功能整合。
    • 使用MobileCore.setPushIdentifier(token)將FCM註冊權杖轉送到SDK。

偵錯步驟

accordion
​1. 驗證FCM權杖註冊

Android對上線活動使用標準FCM註冊權杖。 沒有liveActivity.pushToStart事件或單獨的即時活動推播權杖。

  1. 在Assurance中,開啟​ 事件 ​清單,然後找到標準推播權杖註冊事件。
  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註冊權杖 Token已過期或重新安裝應用程式

如果任何欄位不正確,請視需要修正應用程式設定,使用MobileCore.setPushIdentifier(token)再次轉送FCM權杖,等待5-10分鐘,然後重新檢查設定檔。

如果pushNotificationDetails遺失,表示權杖尚未同步。 在Assurance中確認Token註冊後,請等待5-10分鐘,然後重新檢查設定檔。

案例2:促銷活動設定和裝載問題 scenario-2-campaign-configuration-and-payload-issues

[適用於單一和廣播使用案例]{class="badge informative"}

設定檔存在且具備有效的Token,但未顯示上線活動。 可能的原因:

  • 介面或通道設定錯誤。
  • API裝載結構不正確。
  • 承載欄位與應用程式實作不符: iOS ActivityAttributes或Android樣式提供者對應。
  • 過時timestamp (更新/結束的關鍵)。

對於廣播:​行銷活動必須是​API觸發的行銷,而非異動。 承載使用audience而非recipients。 請參閱平台特定廣播裝載的案例6以及完整API規格的Adobe Developer檔案。

iOS

預先檢查

  • 確認促銷活動是​API觸發的交易式 (單一)或​API觸發的行銷 (廣播)。 保留​ 高輸送量 ​停用,因為它與[已上線]活動不相容。
  • 驗證設定檔是否存在,以及其Token是否已使用案例1中的iOS檢查同步。

偵錯步驟

accordion
​1. 驗證行銷活動表面設定
  1. 在Journey Optimizer中,開啟您的​ 行銷活動 ​並導覽至​ 動作 ​功能表。
  2. 檢查您的​上線活動設定。 您必須使用符合設定檔liveActivityPushNotificationDetails中appId的套件組合識別碼,為iOS應用程式設定表面。 例如,如果您的設定檔有"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中的現有設定檔相符 設定檔識別碼不相符

嚴重:一律使用新的時間戳記

  • 在您進行每個API呼叫時,將timestamp設定為目前的Unix紀元時間(以秒為單位)。 這適用於所有事件型別: start、update和end。
  • 過時或重複使用的時間戳記會導致更新和結束請求失敗或被裝置忽略。 請​ 不 ​重複使用先前請求或快取值的時間戳記。

選用欄位(所有事件型別):

  • requestId:追蹤的唯一識別碼(建議)。
  • 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"
          }
       }
    }
    

驗證檢查清單:

  • 在content-state中包含所有ContentState欄位(所有事件型別都需要)。

  • 在attributes中包含所有LiveActivityAttributes欄位(僅限開始事件),包括:

    • liveActivityData (必要;通常包含liveActivityID或類似的識別碼)
    • 結構中的所有自訂欄位
  • 完全符合欄位名稱(區分大小寫)。

  • 符合資料型別(String、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觸發的行銷 (廣播)。 保留​ 高輸送量 ​停用,因為它與[已上線]活動不相容。
  • 在案例1中,確認設定檔存在且其FCM權杖已使用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金鑰為範例,必須符合您應用程式的樣式提供者。

對於廣播,使用API觸發的行銷活動搭配audience.id,並將fcm物件放在context.requestPayload下。 將topic_name設為目標裝置訂閱的FCM主題。 在開始、更新和結束事件中保持主題和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 設定檔識別碼不相符
topic_name 如果是廣播,請使用目標裝置訂閱的主題 不正確的主題或裝置未訂閱

時間戳記和生命週期檢查:

  • 對每個開始、更新和結束事件,在Epoch秒內使用新的timestamp。 確保大於相同notification_id的上一個值(或廣播的topic_name),即使同一秒內提出請求亦然。
  • 系統會忽略較舊或相等的時間戳記。 請勿重複使用快取的時間戳記。
  • 選用的when欄位控制通知的顯示時間,而不是訊息順序。 保持適度的最新狀態,並在紀元秒內加以表示。
  • 若要更新或結束活動,請變更event_type,同時保留notification_id不變。 Android會對所有三個生命週期事件使用相同的FCM註冊權杖;不需要個別更新權杖。

結束事件解除:

對於event_type: "end",可選擇將dismiss_after設定為移除前,已完成的「上線」活動應保持可見的秒數。 這是持續時間,而非紀元時間戳記。

accordion
​3. 將裝載與Android實作對齊

應用程式的樣式提供者會決定content_state值在即時活動通知中的呈現方式。

  1. 確認Messaging和Live Activities擴充功能已整合至應用程式。
  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呼叫
    已傳遞 報告的傳遞量度 與傳送比較;個別驗證裝置轉譯
    傳送錯誤 無法傳送的推播通知 調查錯誤原因
    傳送排除專案 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觸發的開始計數
    更新 應該顯示更新事件的計數
    結束 應該顯示結束事件的計數
    總計計數 整體已上線活動活動量度

    如果這些量度為零或不符合您的API呼叫,請使用以下平台特定檢查來調查行銷活動處理和推播提供者傳送。

在即時活動行銷活動報告頁面瞭解更多。

檢查平台的傳送

iOS

預先檢查

  • 已驗證的先前案例:

    • 具有正確liveActivityPushNotificationDetails的設定檔已存在。
    • 行銷活動表面和活動型別正確。
    • API裝載對目前時間戳記有效。
    • 更新Token已同步(僅限單一更新和結束事件)。
  • 已確認的API呼叫:

    • 觸發程式API已接受要求。 這不會確認傳遞或裝置轉譯。
    • 行銷活動ID和收件者詳細資料正確無誤。

偵錯步驟

accordion
​1. 解譯傳送錯誤

如果行銷活動報告未顯示傳送錯誤,請略過此步驟。 否則,請比對​ 錯誤原因 ​資料表中的錯誤與下列常見的APN錯誤:

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
常見錯誤 含義 解決方法
權杖無效 推播權杖無效或過期 從裝置重新註冊即時活動權杖
找不到語彙基元 沒有與設定檔相關聯的有效權杖 驗證liveActivityPushNotificationDetails是否存在
已拒絕APN Apple推播通知服務已拒絕推播 檢查APNs憑證、套件ID、環境
網路逾時 無法連線APN 暫時性問題;請重試API呼叫
accordion
​2. 檢查設定檔中的訊息回饋事件
  1. 導覽至Journey Optimizer中的​客戶 > 設定檔。

  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":

    • 檢查errorCode和errorMessage是否有特定的APN錯誤。
    • 常見的APN錯誤包括過期的權杖、無效的憑證、錯誤的套件組合ID。
  8. 若找不到意見反應事件:

    • 可能尚未嘗試推播通知。
    • 檢查設定檔是否已排除在行銷活動報告中。

如果feedbackStatus是sent: Journey Optimizer已傳遞通知給APN。 這不會確認裝置轉譯。 繼續進行步驟4中的裝置端檢查。

accordion
​3. 驗證Assurance中傳送至APN的即時活動
  1. 開啟Assurance工作階段,並在API呼叫期間將其維持作用中。

  2. 執行API呼叫(開始、更新或結束)。

  3. 在​ 活動清單 ​中,尋找已上線活動傳遞活動。

  4. 搜尋與APN推送傳遞相關的事件。

  5. 檢查下列指標:

    • 推送要求至APN:確認Adobe已傳送推送要求至Apple的伺服器
    • APN回應:顯示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憑證
    錯誤的環境(開發環境vs生產環境) 權杖不符錯誤 確保憑證符合應用程式建置型別
    套件組合ID不相符 無效的套件組合識別碼 驗證憑證套件組合ID是否與應用程式相符
    權杖已到期 來自APN的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

預先檢查

  • 已驗證的先前案例:

    • 設定檔具有有效的pushNotificationDetails,包括目前的FCM權杖、Android套件名稱和platform: "fcm"。
    • Campaign介面會鎖定正確的Android應用程式,並使用相符的FCM認證。
    • fcm承載有效,且其timestamp較同一notification_id (或廣播的topic_name)的先前事件新。
    • 開始、更新和結束事件使用相同的notification_id。 單一事件使用相同的FCM註冊權杖;不需要個別的更新權杖。
  • 已確認的API呼叫:

    • API呼叫傳回HTTP 202 (已接受)。 這會確認接受請求,而不會傳送或轉譯裝置。
    • 行銷活動ID和收件者詳細資料正確無誤。 對於廣播,請驗證對象ID和FCM主題。

偵錯步驟

accordion
​1. 解譯傳送錯誤

如果行銷活動報告未顯示傳送錯誤,請略過此步驟。 否則,請比對​ 錯誤原因 ​資料表中的錯誤與下列常見的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專案核發權杖 將FCM憑證與應用程式的Firebase專案對齊
無效的引數 FCM已拒絕裝載 驗證fcm裝載結構
網路逾時 無法連線FCM 暫時性問題;請重試API呼叫
accordion
​2. 檢查設定檔中的訊息回饋事件
  1. 導覽至Journey Optimizer中的​客戶 > 設定檔。

  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. 執行API呼叫,並將event_type設定為start、update或end。
  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作業系統版本、裝置型號、通知許可權狀態和相關應用程式記錄檔

案例4:即時活動更新Token未同步 scenario-4-live-activity-update-token-not-synced

[僅套用至單一使用案例]{class="badge informative"}

[僅適用於iOS]{class="badge positive"}

此即時活動從裝置開始,但接受的update或end API要求不會更新或解除它。 可能的原因是​ 每個執行個體的即時活動更新Token ​尚未同步至Adobe的系統。 完成下列檢查,確認權杖同步是否為問題。

瞭解更新Token

當上線活動在裝置上開始時,iOS會為該特定上線活動執行個體產生唯一的更新權杖。 下列專案需要此代號:

  • 傳送更新至已上線活動
  • 從遠端結束即時活動

每個已上線活動執行個體都有自己的唯一更新權杖。 Adobe需要此Token才能傳遞更新和結束事件。

預期行為

若要讓更新與結束事件運作,必須發生下列情況:

  1. 裝置上的即時活動已成功啟動。
  2. 裝置產生該即時活動執行個體的更新權杖。
  3. 行動SDK會擷取更新Token並將其傳送至Adobe。
  4. 更新Token會同步並儲存在Adobe的系統中。
  5. 針對更新/結束的後續API呼叫會使用此權杖進行傳送。

預先檢查:

  • 使用者許可權:首次在裝置上啟動即時活動時,iOS會顯示系統提示:「允許[應用程式名稱]提供即時活動更新?」 使用者​ 必須點選[允許] ​才能產生並同步更新權杖。 如果使用者點選「不允許」,則不會建立任何更新Token,且更新/結束請求將失敗。 這是每個應用程式的一次性許可權。
  • 設定檔和促銷活動驗證:完成案例1和案例2檢查,以確保設定檔、權杖和促銷活動設定正確無誤。

偵錯步驟

​1. 驗證Assurance中的更新權杖同步
  1. 開啟您的Assurance工作階段。

  2. 確定工作階段在裝置上開始即時活動時處於作用中狀態。

  3. 篩選或搜尋具有eventType = "liveActivity.updateToken"的事件。

  4. 選取事件並檢查裝載:

    • 請確認token欄位包含有效的更新Token字串。
    • 檢查liveActivityID是否與您的即時活動執行個體相符。
    • 確認activityType符合您的attributes-type。
  5. 如果找不到事件:

    • SDK未產生或擷取更新Token。
    • 檢查使用者是否授與上線活動許可權。
    • 確認已在裝置上成功啟動上線活動。
    • 確認行動SDK已正確整合以擷取更新Token。
  6. 如果找到事件,請繼續執行步驟2。

​2. 驗證設定檔事件中的更新權杖
  1. 導覽至Journey Optimizer中的​客戶 > 設定檔。

  2. 搜尋並開啟設定檔。

  3. 選取​ 事件 ​標籤。

  4. 尋找liveActivity.updateToken個事件。

  5. 檢查事件詳細資料:

    • 驗證時間戳記是否為最近(符合上線活動開始的時間)。
    • 確認token和liveActivityID是否存在。
    • 請確定activityType正確。
  6. 如果在設定檔中找不到事件:

    • 更新Token事件可能尚未內嵌至設定檔。
    • 等待5到10分鐘,然後重新檢查。
    • 如果15分鐘後仍然遺失,則可能是事件擷取問題。
  7. 如果找到事件,則表示更新Token已同步。 繼續進行步驟3。

​3. 檢查Assurance中的即時活動傳送事件
  1. 在您的Assurance工作階段中,執行更新或結束API呼叫。

  2. 在​ 事件清單 ​中,尋找已上線活動傳遞事件(APNs推播事件)。

  3. 檢查事件以指出:

    • 推播通知已傳送至APN。
    • APN的回應(成功或錯誤)。
    • 傳遞確認。
  4. 如果APNs傳送事件存在:已傳送推播通知。 如果裝置仍未更新,則問題可能出在裝置端(應用程式未處理推播、網路問題等)。

  5. 如果APN傳遞事件遺失:更新Token可能無法正確儲存,或與Adobe系統中的設定檔建立關聯。

  6. 如果出現錯誤事件:檢查錯誤詳細資料以找出特定的失敗原因(無效的Token、拒絕的APN等)。

案例5:透過API檢查執行狀態 scenario-5-checking-execution-status-via-the-api

[僅套用至單一使用案例]{class="badge informative"}

觸發單一即時活動後,GET訊息執行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禁止
有效的Token,但許可權不足
404找不到
執行識別碼不存在

執行狀態值

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。
  • 承載欄位不符合iOS ActivityAttributes實作或Android樣式提供者對應。
  • Apple推播通道設定不正確,或Android裝置未訂閱FCM主題。

此疑難排解案例適用於廣播行銷活動中的所有即時活動事件: start、update和end。

iOS

預先檢查:

  • 行銷活動型別:

    • 確認行銷活動建立為API觸發的行銷活動(廣播/對象型行銷活動的必要專案)。
    • 確認對象已定義於行銷活動設定中。
  • 設定檔和權杖驗證:從對象中取樣多個設定檔,以驗證它們是否有效liveActivityPushNotificationDetails。 如需詳細的驗證步驟,請遵循案例1。

偵錯步驟

accordion
​1. 驗證Campaign對象設定
  1. 在Journey Optimizer中開啟​API觸發的行銷活動。

  2. 導覽至​ 對象 ​區段並驗證:

    • 已為行銷活動選取閱聽眾。
    • 對象ID符合您的API裝載中使用的對象ID。
    • 對象包含預期的設定檔。
  3. 導覽至​ 動作 ​區段。

  4. 檢查​上線活動設定:

    • 必須使用正確的套件識別碼為iOS應用程式設定設定。
    • 活動型別必須符合您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:

    • 所有廣播Live活動皆需要。
    • 作為此特定廣播執行個體的唯一識別碼。
    • 對象中的所有設定檔都會收到連結至此管道的已上線活動。
    • 必須符合liveActivityData.channelID中的channelID (請參閱步驟3)。
    • 您的團隊必須在Apple開發人員入口網站中為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傳訊API檔案。

accordion
​3. 讓內容狀態、屬性和輸入推播通道與iOS實作一致

確認承載欄位符合您的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。 包含attributes (包含liveActivityData.channelID)僅適用於開始事件:

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。
  • 欄位名稱會區分大小寫,且必須完全相符。
  • 資料型別必須相符(字串、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觸發的行銷,且已定義對象。
  • 設定檔和權杖驗證:​將多個對象設定檔取樣以驗證它們是否具有包含platform: "fcm"的有效pushNotificationDetails。 依照案例1中的Android檢查進行。
  • 主題訂閱:​確認測試裝置已訂閱用於廣播的FCM主題。

偵錯步驟

accordion
​1. 驗證Campaign對象設定
  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的範例設定檔。

時間戳記和選擇性欄位:

  • 對每個事件在Epoch秒內產生新的timestamp,並確保它嚴格大於相同主題的最後一個值。 系統會忽略較舊或相等的值。
  • when可選擇設定通知的顯示時間(以epoch秒為單位)。 它無法控制訊息順序。
  • 針對event_type: "end",dismiss_after可選擇指定移除前已完成活動仍可見的秒數。 這是持續時間,而非紀元時間戳記。

如需完整API規格,請參閱Adobe Journey Optimizer傳訊API檔案。

accordion
​3. 驗證主題訂閱和應用程式呈現
  1. 確認測試裝置使用FirebaseMessaging.getInstance().subscribeToTopic(topic)訂閱topic_name中指定的主題。
  2. 確認訂閱是否成功,以及應用程式是否透過其已安裝的Adobe Live活動擴充功能支援的主題訂閱追蹤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. 在​ 事件 ​清單中,檢查可用的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使用不同的對象評估方法,判斷設定檔更新何時會反映在對象中:

方法
評估頻率
資料新鮮度
最適合
批次
每日(已排程)一次
可能長達24小時已過時
大型受眾,不區分時間
串流
即時(設定檔變更)
更新的設定檔近乎即時
時效性,需要設定檔更新
Edge
在邊緣位置即時
近乎即時
Edge評估的使用案例

預先檢查

  • 行銷活動和承載驗證:

    • 完成您平台的案例6中的檢查,以確保行銷活動和裝載正確。
    • 確認API承載中的audience.id符合行銷活動設定。
  • 設定檔存在:​請確認Adobe Experience Platform中存在包含有效推播權杖詳細資料的設定檔。 遵循案例1中的檢查。 需尋找的詳細資訊取決於平台:

    • iOS: liveActivityPushNotificationDetails包含有效的權杖。
    • Android: pushNotificationDetails包含目前的FCM註冊Token、符合Android封裝名稱platform: "fcm"和denylisted: false的appId。
  • 主題訂閱(僅限Android):​確認裝置已訂閱topic_name中指定的正確FCM主題。 對象成員資格不會讓裝置訂閱主題。 請依照案例6中的Android主題訂閱檢查進行。

偵錯步驟

​1. 驗證設定檔位於對象中

首先,確認應接收上線活動的設定檔是否實際屬於對象。

  1. 導覽至Adobe Experience Platform中的​對象。

  2. 使用行銷活動中的audience.id搜尋並開啟對象。

  3. 按一下​ 瀏覽 ​或​ 範例設定檔 ​以檢視對象成員。

  4. 使用名稱空間和身分值搜尋您的測試設定檔。

  5. 如果在對象中找不到設定檔:

    • 設定檔不符合對象條件或區段規則。
    • 檢閱對象定義以瞭解成員資格要求。
    • 更新設定檔資料或對象定義,以包含設定檔。
    • 等待對象評估完成(請參閱步驟2)。
  6. 如果在對象中找到設定檔:​請繼續執行步驟2以檢查資料的時效性。

​2. 檢查對象評估型別和排程

識別對象是使用批次、串流或邊緣評估,因為這決定了資料的時效性。

note
NOTE
對象評估不會註冊推播權杖或向FCM主題訂閱Android裝置。 它只會決定對象快照包含哪些設定檔資料。
  1. 在​ 對象詳細資料 ​頁面上,檢查​評估方法:

    • 批次:依排程每日評估一次。
    • 串流:在發生設定檔更新時即時評估。
    • Edge:在邊緣位置即時評估。

根據評估方法,遵循適當的疑難排解步驟:

如果對象使用批次評估:

  1. 瞭解批次對象限制:

    • 批次對象每天評估一次(通常隔夜)。
    • 對象快照可能長達24小時之前。
    • 如果設定檔最近已註冊或重新整理其推播權杖詳細資料(在iOS上為liveActivityPushNotificationDetails,在Android上為pushNotificationDetails),則更新的詳細資料可能不在目前的快照中。
    • 在下次批次評估前不會反映設定檔的更新。
  2. 檢查上次評估發生的時間:

    • 在對象詳細資訊中,尋找​ 上次評估 ​時間戳記。
    • 如果設定檔的推播權杖詳細資料在此時間戳記後更新,則對象快照不包含目前的權杖。
  3. 解析過時資料:

    1. 選項1:等候排定的批次評估

      • 下一個批次評估將包含更新的設定檔資料。
      • 此作業每天自動進行一次。
      • 最適合非緊急情況。
    2. 選項2:觸發隨選對象評估

      1. 導覽至AEP中的​對象。
      2. 選取您的客群。
      3. 按一下​ 立即評估 ​或​依需求啟用。
      4. 等候評估完成(根據對象人數而定,這可能需要幾分鐘到幾小時的時間)。
      5. 確認設定檔現在已更新對象快照中的資料。
      6. 重試廣播API呼叫。

如果對象使用串流評估:

  1. 瞭解串流對象行為:

    • 當設定檔更新發生時,串流對象會即時評估。
    • 新設定檔:如果設定檔符合區段條件,建立後即符合資格。
    • 已更新設定檔:更新後不久即符合或取消資格。
    • 現有未變更的設定檔:除非進行更新,否則不會重新評估。
  2. 識別問題:

    • 如果設定檔已存在並符合區段標準,但該設定檔未發生更新,則可能無法將其新增到新建立的串流受眾。
    • 設定檔必須接收更新(任何屬性變更),才能觸發重新評估。
  3. 解決問題:

    • 對於新設定檔:如果符合條件,它們會自動符合條件。 不需要採取任何動作。

    • 對於沒有最近更新的現有設定檔:

      • 對設定檔進行微幅更新(例如,更新時間戳記欄位)。
      • 這會觸發串流評估,並將設定檔新增至對象。
      • 替代方案:針對現有設定檔使用批次對象或邊緣對象。

進階:透過資料集查詢進行偵錯 advanced-debugging-via-dataset-queries

NOTE
這些查詢同時適用於iOS和Android。 兩個平台都使用​ AJO訊息回饋事件資料集 ​中的message.feedback個事件,其結構描述路徑和feedbackStatus值如下所示。
sent狀態表示已移交給推送提供者: iOS上的APN或Android上的FCM。

對象:開發人員和資料工程師。 需要透過Adobe Experience Platform查詢服務以SQL方式存取Journey Optimizer資料集。

何時使用: Assurance僅限於測試在使用中工作階段期間連線的裝置。 使用資料集查詢來調查生產作業一般使用者回報的問題,或在事後稽核傳遞歷史記錄。 資料集會顯示與Assurance外掛程式相同的生命週期和失敗資訊。

找到資料集

  1. 在Journey Optimizer中,導覽至​資料管理 > 資料集。

  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已知時,請使用此選項。 以從設定檔擷取的ECID值取代<YOUR_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中的​設定檔,使用自訂名稱空間和身分值搜尋設定檔,然後從設定檔的身分詳細資料擷取ECID。 在上述查詢中使用該ECID值。

feedbackStatus值

值
含義
sent
已移交給推送提供者(iOS上的APN、Android上的FCM);不確認裝置轉譯(請參閱下文)
error
傳遞錯誤 — 檢查failure_reason以取得詳細資料
denylist
權杖無效、已取消註冊或已加入封鎖清單(例如已解除安裝的應用程式);請重新註冊裝置權杖
exclude
傳送前已排除設定檔(遺失權杖、同意問題或型別規則)
delay
傳遞已延遲;將重試
duplicate
傳遞層級的重複資料刪除已抑制重複傳送
bounce
推播提供者已退回的傳遞(例如,權杖傳回的硬性失敗)
NOTE
對於la_event欄位,資料集記錄的是初始傳遞事件的remotestart,而不是start。 依事件型別進行查詢時,請適當的篩選。

解譯已傳送狀態 interpreting-the-sent-status

IMPORTANT
8小時即時活動持續時間限制僅適用於iOS,不適用於Android。

sent的feedbackStatus確認Journey Optimizer已成功將通知傳遞給推播提供者(iOS上的APN,Android上的FCM)。 它​ 不 ​會確認已在裝置上轉譯即時活動。

資料集在移交給推送提供者後並未確認裝置轉譯。 無法從資料集中觀察裝置端失敗,例如作業系統限制、提供者和裝置之間的網路中斷,或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).

Personas:

  • marketer: Can open the Reports button on a Live activity Campaign and select View all time report to check Sending Statistics metrics. Can review the Live activity lifecycle section for Remote starts, Updates, Ends, and Totals count figures. The page states that if Send errors are greater than 0, check the Error Reasons table. Where: “Check campaign reports”.

Onboarding:

  • Level: Intermediate
  • First minimal step: Navigate to Customer, then Profiles, in Journey Optimizer to search for a profile using the namespace and identity value from the API request.
  • Success check: The profile is found, and you can continue with the token checks for your platform.
  • Previous: Creating the Live activity message before triggering it: Create a Live activity message (mobile-live/create-mobile-live.md)
  • Next: Learning more about Live activity campaign reporting metrics: Campaign Live activity report (reports/campaign-global-report-cja-activity.md)
recommendation-more-help
journey-optimizer-help