일반적인 라이브 활동 문제 해결 시나리오 troubleshoot-mobile-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 요청의 네임스페이스와 ID 값을 사용하여 검색합니다.
  3. 프로필을 찾을 수 없으면 프로필이 존재하지 않거나 수집이 완료되지 않았습니다. 라이브 활동을 트리거하기 전에 프로필을 만들거나 수집이 완료될 때까지 기다립니다.
  4. 프로필이 발견되면 플랫폼에 대한 토큰 검사를 계속 진행합니다.

푸시 토큰 확인

iOS

사전 확인

  • iOS 앱 요구 사항:

    • iOS 16.1+
    • Info.plist에서 NSSupportsLiveActivities을(를) 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 간 불일치
attributeType Swift ActivityAttributes 구조체 이름과 정확히 일치해야 합니다(대/소문자 구분). 구조체 이름이 잘못되었거나 입력
platform "apns" 또는 "apnsSandbox"이어야 합니다. 잘못된 플랫폼 값
denylisted false이어야 합니다. 토큰이 유효하지 않거나 사용자가 옵트아웃한 것으로 표시됨
token 유효한 APNs 푸시 토큰 토큰이 만료되거나 앱이 다시 설치됨

필드가 올바르지 않으면 모바일 앱을 업데이트하고 Messaging.registerLiveActivities을(를) 사용하여 다시 등록하고 5~10분 정도 기다린 다음 다시 확인하십시오.

liveActivityPushNotificationDetails이(가) 누락된 경우 토큰이 아직 동기화되지 않았습니다. Assurance에서 liveActivity.pushToStart 이벤트가 표시된 후 5~10분 정도 기다렸다가 다시 확인하십시오.

Android

사전 확인

  • Android 앱 요구 사항:

    • targetSdk을(를) 36(으)로 설정하여 Android 16.1(API 수준 36.1) 이상에서 앱을 실행합니다.
    • POST_NOTIFICATIONS 및 POST_PROMOTED_NOTIFICATIONS 권한이 부여되었는지 확인하십시오.
    • 라이브 활동에서 사용하는 알림 채널을 만듭니다.
  • Mobile 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 등록 토큰과 일치해야 합니다. 토큰이 만료되거나 앱이 다시 설치됨

잘못된 필드가 있으면 필요에 따라 앱 구성을 수정하고 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을(를) 사용합니다. 플랫폼별 브로드캐스트 페이로드는 시나리오 6을, 전체 API 사양은 Adobe Developer 설명서를 참조하십시오.

iOS

사전 확인

  • 캠페인이 API 트리거 트랜잭션(단일) 또는 API 트리거 마케팅(브로드캐스트)인지 확인하십시오. 높은 처리량​은(는) 라이브 활동과 호환되지 않으므로 사용하지 않도록 설정하십시오.
  • 시나리오 1에서 iOS 검사를 사용하여 프로필이 있고 해당 토큰이 동기화되었는지 확인하십시오.

디버깅 단계

accordion
​1. 캠페인 표면 구성 확인
  1. Journey Optimizer에서 Campaign​을(를) 열고 작업 메뉴로 이동합니다.
  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 Epoch 시간(초)이어야 함 이전/캐시된 타임스탬프 사용
userId / namespace AEP의 기존 프로필과 일치해야 합니다. 프로필 식별자 불일치

중요: 항상 새 타임스탬프를 사용

  • 각 API 호출을 수행하는 시점의 현재 Unix Epoch 시간(초)으로 timestamp을(를) 설정합니다. 이는 모든 이벤트 유형(start, update 및 end)에 적용됩니다.
  • 오래되거나 재사용된 타임스탬프로 인해 업데이트 및 종료 요청이 실패하거나 장치에서 무시됩니다. 이전 요청의 타임스탬프나 캐시된 값을 다시 사용하지 마십시오.

선택적 필드(모든 이벤트 유형):

  • requestId: 추적에 대한 고유 식별자(권장).
  • alert: 알림에 대해 title 및 body이(가) 있는 개체입니다. 업데이트에 주의를 기울이는 데 유용합니다.

정보 dismissal-date:

  • 선택 사항입니다. Unix epoch 시간(초). 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 또는 유사한 식별자를 포함)
    • 구조의 모든 사용자 정의 필드
  • 필드 이름을 정확히 일치시키십시오(대/소문자 구분).

  • 데이터 유형(문자열, 정수, 부울, 중첩된 오브젝트)을 일치시킵니다.

  • 중첩된 오브젝트 구조를 유지합니다.

일반적인 실수:

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. 이벤트 페이로드를 검토하여 다음을 확인합니다.

    • 페이로드가 올바르게 처리되었습니다.
    • 유효성 검사 오류가 발생하지 않았습니다.
    • 라이브 활동이 APNs로 전송되었습니다.
Android

사전 확인

  • 캠페인이 API 트리거 트랜잭션(단일) 또는 API 트리거 마케팅(브로드캐스트)인지 확인하십시오. 높은 처리량​은(는) 라이브 활동과 호환되지 않으므로 사용하지 않도록 설정하십시오.
  • 시나리오 1에서 Android 검사를 사용하여 프로필이 존재하고 해당 FCM 토큰이 동기화되었는지 확인하십시오.

디버깅 단계

accordion
​1. 캠페인 표면 구성 확인
  1. Journey Optimizer에서 Campaign​을(를) 열고 작업 메뉴로 이동합니다.
  2. 라이브 활동 구성​을 확인하세요. 표면은 프로필의 pushNotificationDetails에 있는 appId과(와) 일치하는 패키지 이름으로 Android 앱을 대상으로 해야 합니다.
  3. 표면에 해당 앱에 대한 FCM 자격 증명이 사용되는지 확인합니다. 프로필의 토큰 플랫폼은 "fcm"이어야 합니다.
  4. 페이로드의 notification_channel_id이(가) 앱에서 만든 알림 채널과 일치하는지 확인하십시오.
accordion
​2. API 페이로드 구조 확인

context.requestPayload.fcm 아래에 Android Live 활동 필드를 배치하십시오.

단일 시작 페이로드:

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 Epoch 시간(초)으로 바꿉니다. 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를 사용하십시오. 프로필 식별자 불일치
topic_name 브로드캐스트의 경우 대상 디바이스에서 구독한 주제를 사용합니다 잘못된 주제 또는 장치가 구독되지 않음

타임스탬프 및 주기 확인:

  • 모든 시작, 업데이트 및 종료 이벤트에 대해 Epoch 초 단위의 새로운 timestamp을(를) 사용합니다. 요청이 같은 초 내에 이루어진 경우에도 동일한 notification_id(또는 브로드캐스트의 경우 topic_name)에 대한 이전 값보다 큰지 확인하십시오.
  • 이전 또는 동일한 타임스탬프는 무시됩니다. 캐시된 타임스탬프를 재사용하지 마십시오.
  • 선택적 when 필드는 메시지 순서 지정이 아니라 알림의 표시 시간을 제어합니다. 그것을 합리적으로 최신 상태로 유지하고 획기적인 초 단위로 표현한다.
  • 활동을 업데이트하거나 종료하려면 notification_id을(를) 변경하지 않고 event_type을(를) 변경하십시오. Android은 세 라이프사이클 이벤트 모두에 대해 동일한 FCM 등록 토큰을 사용하므로 별도의 업데이트 토큰이 필요하지 않습니다.

이벤트 종료:

event_type: "end"의 경우 선택적으로 dismiss_after을(를) 제거하기 전에 완료된 라이브 활동이 계속 표시되는 시간(초)으로 설정합니다. epoch 타임스탬프가 아닌 기간입니다.

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의 APNs 또는 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 트리거 시작 수를 표시해야 함
    업데이트 업데이트 이벤트 수를 표시해야 함
    종료 종료 이벤트 수를 표시해야 함
    총계 수 전체 라이브 활동 이벤트 볼륨

    이러한 지표가 0이거나 API 호출과 일치하지 않는 경우 아래 플랫폼별 검사를 사용하여 캠페인 처리를 조사하고 공급자 게재를 푸시하십시오.

라이브 활동 보고서 페이지에서 자세히 알아보세요.

플랫폼에 대한 게재 확인

iOS

사전 확인

  • 이전 시나리오가 확인됨:

    • 올바른 liveActivityPushNotificationDetails을(를) 가진 프로필이 있습니다.
    • 캠페인 표면 및 활동 유형이 올바릅니다.
    • API 페이로드는 현재 타임스탬프와 함께 유효합니다.
    • 업데이트 토큰이 동기화됩니다(단일 업데이트 및 종료 이벤트만 해당).
  • API 호출 확인:

    • 트리거 API가 요청을 수락했습니다. 전달 또는 장치 렌더링은 확인되지 않습니다.
    • 캠페인 ID 및 수신자 세부 정보가 올바릅니다.

디버깅 단계

accordion
​1. 전송 오류 해석

캠페인 보고서에 전송 오류가 표시되지 않는 경우 이 단계를 건너뜁니다. 그렇지 않으면 오류 이유 표의 오류를 다음 일반적인 APNs 오류와 일치시키십시오.

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
일반 오류 의미 해결 방법
잘못된 토큰 푸시 토큰이 잘못되었거나 만료됨 장치에서 라이브 활동 토큰 재등록
토큰을 찾을 수 없음 프로필과 연결된 유효한 토큰 없음 liveActivityPushNotificationDetails이(가) 있는지 확인
거부된 APNs Apple 푸시 알림 서비스가 푸시를 거부했습니다 APNs 인증서, 번들 ID, 환경 확인
네트워크 시간 제한 APNs에 연결할 수 없음 일시적인 문제; 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 활동용 APNs여야 함
    errorCode 숫자 코드 또는 null 실패한 경우 APNs 관련 오류 코드
    errorMessage 오류 설명 또는 null 사람이 읽을 수 있는 오류 메시지
  7. 경우 feedbackStatus: "error":

    • 특정 APNs 오류에 대해서는 errorCode 및 errorMessage을(를) 확인하십시오.
    • 일반적인 APNs 오류에는 만료된 토큰, 잘못된 인증서, 잘못된 번들 ID가 포함됩니다.
  8. 피드백 이벤트가 없는 경우:

    • 푸시 알림이 시도되지 않았을 수 있습니다.
    • 프로필이 캠페인 보고서에서 제외되었는지 확인하십시오.

feedbackStatus이(가) sent인 경우: Journey Optimizer이 APNs에 알림을 전달했습니다. 장치 렌더링은 확인되지 않습니다. 4단계에서 디바이스 측 확인을 계속 진행합니다.

accordion
​3. Assurance에서 APNs에 라이브 활동 전달 확인
  1. Assurance 세션을 열고 API 호출 동안 활성 상태로 유지합니다.

  2. API 호출 실행(시작, 업데이트 또는 종료).

  3. 이벤트 목록​에서 라이브 활동 전달 이벤트를 찾습니다.

  4. APNs 푸시 게재와 관련된 이벤트를 검색합니다.

  5. 다음 지표를 확인하십시오.

    • APNs에 대한 푸시 요청: Adobe이 Apple 서버로 푸시를 보냈는지 확인합니다.
    • APNs 응답: APNs가 푸시를 수락했는지 또는 거부했는지 여부를 표시합니다.
    • 게재 상태: 성공 또는 실패 표시
  6. 문제가 발견되면 다음의 일반적인 APNs 전달 문제를 참조하십시오.

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    문제 Assurance의 증상 해결 방법
    APNs 인증서 만료됨 인증 오류 새 APNs 인증서 갱신 및 업로드
    잘못된 환경(개발 및 프로덕션) 토큰 불일치 오류 인증서가 앱 빌드 유형과 일치하는지 확인
    번들 ID 불일치 잘못된 번들 식별자 인증서 번들 ID가 앱과 일치하는지 확인
    토큰 만료됨 APNs에서 잘못된 토큰 오류 라이브 활동 토큰 재등록
    속도 제한 요청이 너무 많음 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. 전송 오류 해석

캠페인 보고서에 전송 오류가 표시되지 않는 경우 이 단계를 건너뜁니다. 그렇지 않으면 오류 이유 테이블의 오류를 다음 일반적인 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. 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 호출의 타임스탬프
  • 전송 통계, 오류 이유 및 제외된 이유를 보여주는 캠페인 보고서 스크린샷
  • FCM 오류 코드 및 메시지를 포함한 관련 프로필 message.feedback 이벤트
  • 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의 고객 > 프로필(으)로 이동합니다.

  2. 프로필을 검색하여 엽니다.

  3. 이벤트 탭을 선택합니다.

  4. liveActivity.updateToken개의 이벤트를 찾습니다.

  5. 이벤트 세부 사항을 확인합니다.

    • 타임스탬프가 최근인지 확인합니다(라이브 활동이 시작된 시기와 일치).
    • token 및 liveActivityID이(가) 있는지 확인하십시오.
    • activityType이(가) 올바른지 확인하십시오.
  6. 프로필에서 이벤트를 찾을 수 없는 경우

    • 업데이트 토큰 이벤트가 아직 프로필에 수집되지 않았을 수 있습니다.
    • 5-10분 정도 기다린 후 다시 확인하십시오.
    • 15분 후에도 계속 누락된 경우 이벤트 수집 문제가 있을 수 있습니다.
  7. 이벤트를 찾으면 업데이트 토큰이 동기화됩니다. 3단계로 진행합니다.

​3. Assurance에서 라이브 활동 전달 이벤트 확인
  1. Assurance 세션에서 업데이트 또는 종료 API 호출을 실행합니다.

  2. 이벤트 목록​에서 라이브 활동 전달 이벤트(APNs 푸시 이벤트)를 찾습니다.

  3. 다음을 나타내는 이벤트를 확인합니다.

    • APNs에 푸시 알림을 보냈습니다.
    • APNs 응답(성공 또는 오류).
    • 게재 확인.
  4. APNs 게재 이벤트가 있는 경우 푸시 알림이 전송되었습니다. 디바이스가 여전히 업데이트되지 않으면 디바이스 측에서 문제가 발생할 수 있습니다(푸시, 네트워크 문제 등을 처리하지 않는 앱).

  5. APNs 게재 이벤트가 누락된 경우: 업데이트 토큰이 Adobe 시스템의 프로필에 제대로 저장되거나 연결되지 않을 수 있습니다.

  6. 오류 이벤트가 있는 경우: 특정 실패 이유(잘못된 토큰, APNs 거부됨 등)에 대해 오류 세부 사항을 검사합니다.

시나리오 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개
실행이 발견되었으며 정상적으로 반환됨
401 승인되지 않음
누락되었거나 잘못된 전달자 토큰
403 금지
토큰은 유효하지만 권한이 충분하지 않음
404 찾을 수 없음
실행 ID가 존재하지 않음

실행 상태 값

200 응답의 status 필드는 실행 진행률을 나타냅니다.

상태
설명
PENDING
실행이 큐에 있지만 아직 시작되지 않음
INPROGRESS
실행이 현재 처리 중입니다.
COMPLETED
실행이 정상적으로 완료됨
FAILED
실행 도중 오류 발생

200 응답도 실행을 트리거하는 캠페인 또는 여정에 다시 연결하는 메타데이터(campaignId, journeyId, batchInstanceId, 에셋 정보)가 있는 source 블록, executionType(unitary 또는 batch), executionRunMode(default 또는 test)을 반환합니다.

시나리오 6: 브로드캐스트 캠페인 구성 및 페이로드 문제 broadcast-config

[브로드캐스트 사용 사례에만 적용]{class="badge informative"}

이 섹션에서는 단일 캠페인과 다른 디버깅 접근 방식이 필요한 라이브 브로드캐스트 활동과 관련된 문제 해결 시나리오를 다룹니다.

프로필에 유효한 토큰이 있지만 라이브 활동이 대상 구성원에 대해 나타나거나, 업데이트되거나, 예상대로 작동하지 않는 경우 문제는 일반적으로 다음 중 하나에서 발생합니다.

  • 캠페인이 API 트리거 마케팅으로 구성되지 않았습니다.
  • API 페이로드에 audience 또는 플랫폼별 브로드캐스트 식별자 input-push-channel(iOS) 또는 topic_name(Android)가 없습니다.
  • 페이로드 필드가 iOS ActivityAttributes 구현 또는 Android 스타일-공급자 매핑과 일치하지 않습니다.
  • Apple 푸시 채널이 잘못 구성되었거나 Android 장치가 FCM 주제를 구독하지 않습니다.

이 문제 해결 시나리오는 브로드캐스트 캠페인의 모든 라이브 활동 이벤트(start, update 및 end)에 적용됩니다.

iOS

사전 확인:

  • 캠페인 유형:

    • 캠페인이 API 트리거 마케팅으로 생성되었는지 확인합니다(브로드캐스트/대상 기반 캠페인에 필요).
    • 대상이 캠페인 구성에 정의되어 있는지 확인합니다.
  • 프로필 및 토큰 유효성 검사: 대상에서 여러 프로필을 샘플링하여 liveActivityPushNotificationDetails이(가) 유효한지 확인합니다. 자세한 유효성 검사 단계는 시나리오 1을(를) 참조하십시오.

디버깅 단계

accordion
​1. 캠페인 대상자 구성 확인
  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 Epoch 시간(초)이어야 함 이전/캐시된 타임스탬프 사용
event "start", "update" 또는 "end"이어야 합니다. 잘못된 이벤트 유형
attributes-type 캠페인 활동 유형과 일치해야 함 불일치 또는 오타
content-available 1이어야 합니다. 누락되거나 잘못된 값

중요한 브로드캐스트 관련 필드:

  • input-push-channel:

    • 모든 브로드캐스트 라이브 활동에 필요합니다.
    • 이 특정 브로드캐스트 인스턴스의 고유 식별자 역할을 합니다.
    • 대상자의 모든 프로필은 이 채널에 연결된 라이브 활동을 수신합니다.
    • liveActivityData.channelID의 channelID과(와) 일치해야 합니다(3단계 참조).
    • 팀이 Apple 개발자 포털에서 appID에 대해 만들어야 합니다.
    • 특정 appID에 대해 만들어진 채널만 해당 앱에서 라이브 활동을 브로드캐스트하는 데 사용할 수 있습니다.
  • audience.id:

    • Adobe Experience Platform에서 생성된 유효한 대상 세그먼트를 참조해야 합니다.
    • 이 대상자의 모든 프로필은 라이브 활동을 대상으로 합니다.
    • 대상자를 활성화해야 하며 올바른 liveActivityPushNotificationDetails의 프로필을 포함해야 합니다.

항상 최신 타임스탬프 사용:

  • timestamp 필드는 모든 API 호출에 대해 항상 현재 Unix Epoch 시간(초)이어야 합니다.
  • 이 요구 사항은 모든 이벤트 유형(start, update 및 end)에 적용됩니다.
  • 업데이트/종료에 중요: 오래된 타임스탬프를 사용하면 업데이트 및 종료 요청이 실패합니다.
  • 모든 브로드캐스트 API 호출에 대해 새 타임스탬프를 생성합니다.

선택적 필드:

  • dismissal-date: 자동 해지를 위한 Unix epoch 시간(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을(를) 포함합니다. 시작 이벤트에만 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과(와) 일치해야 합니다.
  • 필드 이름은 대소문자를 구분하며 정확히 일치해야 합니다.
  • 데이터 유형은 일치해야 합니다(문자열, 정수, 부울, 중첩된 오브젝트 등).
  • 업데이트/종료 이벤트의 경우 원래 시작 이벤트와 동일한 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이(가) 있습니다.
    • 유효성 검사 오류가 발생하지 않았습니다.
    • 라이브 활동이 대상 구성원을 위해 APNs로 전송되었습니다.
Android

사전 확인:

  • 캠페인 유형: 캠페인이 API로 트리거된 마케팅​이고 대상이 정의되어 있는지 확인하십시오.
  • 프로필 및 토큰 유효성 검사: 여러 대상 프로필을 샘플링하여 platform: "fcm"과(와) 함께 올바른 pushNotificationDetails이(가) 있는지 확인합니다. 시나리오 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 Epoch 시간(초)으로 바꿉니다. 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은(는) 선택적으로 제거 전에 완료된 활동이 표시되는 시간(초)을 지정합니다. epoch 타임스탬프가 아닌 기간입니다.

전체 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"}

이 시나리오에서는 캠페인과 페이로드가 올바르게 구성되었지만 특정 프로필이 라이브 활동을 수신하고 있지 않습니다. 이 문제는 일반적으로 다음과 같은 경우에 발생합니다.

  • 프로필이 캠페인에 연결된 대상자의 멤버가 아닙니다.
  • 대상자는 일괄 처리 대상자이며 프로필 데이터의 오래된 스냅샷을 포함합니다.
  • 프로필의 푸시 토큰 세부 정보(iOS의 liveActivityPushNotificationDetails 또는 Android의 pushNotificationDetails)가 최근에 업데이트되었지만 아직 대상 스냅숏에 반영되지 않았습니다.

이 문제 해결 시나리오는 특히 대상 기반 타깃팅을 사용하는 브로드캐스트 캠페인에 적용됩니다.

대상 평가 이해

Adobe Experience Platform에서는 프로필 업데이트가 대상에 반영되는 시기를 결정하는 다양한 대상 평가 방법을 사용합니다.

방법
평가 빈도
데이터 새로 고침
다음에 최적
배치
매일 한 번(예약됨)
최장 24시간 오래됨
대규모 대상, 시간에 민감하지 않음
스트리밍
실시간(프로필 변경 시)
업데이트된 프로필에 대해 거의 실시간으로
시간에 민감함, 프로필 업데이트 필요
Edge
에지 위치에서 실시간
거의 실시간으로
Edge 평가 사용 사례

사전 확인

  • 캠페인 및 페이로드 유효성 검사:

    • 플랫폼에 대한 시나리오 6에서 검사를 완료하여 캠페인과 페이로드가 올바른지 확인하세요.
    • API 페이로드의 audience.id이(가) 캠페인 구성과 일치하는지 확인하십시오.
  • 프로필 있음: 푸시 토큰 세부 정보가 유효한 Adobe Experience Platform에 프로필이 있는지 확인하십시오. 시나리오 1의 검사를 따르십시오. 찾을 세부 정보는 플랫폼에 따라 다릅니다.

    • 유효한 토큰이 있는 iOS: liveActivityPushNotificationDetails.
    • 현재 FCM 등록 토큰을 포함하는 Android: pushNotificationDetails, Android 패키지 이름 platform: "fcm" 및 denylisted: false과(와) 일치하는 appId.
  • 주제 구독(Android만 해당): 장치가 topic_name에 지정된 정확한 FCM 주제를 구독하고 있는지 확인합니다. 대상 멤버십은 장치를 주제에 구독하지 않습니다. 시나리오 6에서 Android 주제 구독 검사를 따르십시오.

디버깅 단계

​1. 프로필이 대상자에 있는지 확인

먼저 라이브 활동을 수신해야 하는 프로필이 실제로 대상자의 일부인지 확인합니다.

  1. Adobe Experience Platform의 대상(으)로 이동합니다.

  2. 캠페인의 audience.id을(를) 사용하여 대상자를 검색하고 엽니다.

  3. 대상 구성원을 보려면 찾아보기 또는 샘플 프로필​을 클릭하세요.

  4. 네임스페이스 및 ID 값을 사용하여 테스트 프로필을 검색합니다.

  5. 프로필이 대상자에 없는 경우:

    • 프로필이 대상자 기준이나 세그먼트 규칙을 충족하지 않습니다.
    • 대상자 정의를 검토하여 멤버십 요구 사항을 이해합니다.
    • 프로필을 포함하도록 프로필 데이터 또는 대상자 정의를 업데이트합니다.
    • 대상 평가가 완료될 때까지 기다립니다( 2단계 참조).
  6. 대상자에 프로필이 있는 경우: 2단계로 진행하여 데이터의 최신 상태를 확인합니다.

​2. 대상 평가 유형 및 일정 확인

대상자가 일괄 처리, 스트리밍 또는 에지 평가를 사용하는지 여부를 식별합니다. 이렇게 하면 데이터의 새로 고침이 결정됩니다.

note
NOTE
대상 평가는 푸시 토큰을 등록하거나 Android 장치를 FCM 주제에 구독하지 않습니다. 대상 스냅샷에 포함된 프로필 데이터만 결정합니다.
  1. 대상자 세부 정보 페이지에서 평가 메서드​를 확인하세요.

    • 일괄 처리: 일정에 따라 매일 한 번 평가됩니다.
    • 스트리밍: 프로필 업데이트가 발생할 때 실시간으로 평가됩니다.
    • Edge: 가장자리 위치에서 실시간으로 평가되었습니다.

평가 방법에 따라 적절한 문제 해결 단계를 수행합니다.

대상자가 일괄 처리 평가를 사용하는 경우:

  1. 일괄 처리 대상 제한 이해:

    • 배치 대상은 하루에 한 번(일반적으로 밤에) 평가됩니다.
    • 대상 스냅샷은 최대 24시간 경과할 수 있습니다.
    • 프로필이 최근에 등록했거나 푸시 토큰 세부 정보를 새로 고친 경우(liveActivityPushNotificationDetails(iOS) 또는 pushNotificationDetails(Android) 업데이트된 세부 정보가 현재 스냅숏에 없을 수 있습니다.
    • 프로필에 대한 업데이트는 다음 일괄 처리 평가 때까지 반영되지 않습니다.
  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의 APNs 또는 Android의 FCM에 대한 핸드오프를 나타냅니다.

대상: 개발자 및 데이터 엔지니어 Adobe Experience Platform 쿼리 서비스를 통해 Journey Optimizer 데이터 세트에 대한 SQL 액세스 권한이 필요합니다.

사용해야 하는 경우: Assurance은 활성 세션 중에 연결된 테스트 장치로 제한됩니다. 데이터 세트 쿼리를 사용하여 프로덕션 최종 사용자가 보고한 문제를 조사하거나 사후 게재 내역을 감사할 수 있습니다. 데이터 세트는 Assurance 플러그인과 동일한 라이프사이클 및 실패 정보를 노출합니다.

데이터 세트 찾기

  1. Journey Optimizer에서 데이터 관리 > 데이터 세트(으)로 이동합니다.

  2. 시스템 데이터 세트 표시 토글을 사용하도록 설정하고 AJO 메시지 피드백 이벤트 데이터 세트​를 엽니다.

세부 정보 페이지에 표시된 정확한 테이블 이름을 확인합니다. 아래 쿼리는 ajo_message_feedback_event_dataset을(를) 사용합니다. 다른 경우 실제 테이블 이름으로 바꾸십시오. 이 데이터 세트의 필드에 대해서는 Adobe Journey Optimizer 스키마 참조를 참조하십시오.

라이브 활동 ID별 쿼리

라이브 활동 ID(예: 주문 UUID 또는 배송 추적 ID)를 알고 전체 라이프사이클에서 모든 피드백 이벤트를 연결하려는 경우 이 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 오류를 반환합니다.
메시지 피드백 이벤트 데이터 집합은 identityMap에 ECID만 저장합니다. 영향을 받는 프로필이 ECID가 아닌 사용자 지정 네임스페이스로 식별되는 경우, 먼저 ECID를 해결하십시오. AEP에서 프로필(으)로 이동하고 사용자 지정 네임스페이스와 ID 값을 사용하여 프로필을 검색한 다음 프로필의 ID 세부 정보에서 ECID를 검색하십시오. 위의 쿼리에서 해당 ECID 값을 사용합니다.

feedbackStatus 값

값
의미
sent
푸시 공급자(iOS의 APNs, 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의 APNs, Android의 FCM)에게 알림을 성공적으로 전달했음을 확인합니다. 라이브 활동이 장치에서 렌더링되었는지 확인하지 않습니다.

푸시 공급자에게 전달 후 데이터 세트에서 장치 렌더링을 확인하지 않습니다. 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).

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