Decisioning을 사용하여 오퍼 만들기 및 표시

Experience Platform Mobile SDK을 사용하여 모바일 앱에서 Journey Optimizer Decisioning의 오퍼를 표시하는 방법을 알아봅니다.

Journey Optimizer Decisioning은 오퍼 관리의 차세대 제품이며 의사 결정 관리의 후속 모델입니다. 의사 결정 기능을 사용하면 중앙 집중식 의사 결정 항목 카탈로그를 강력한 의사 결정 엔진과 결합하여 개인화된 마케팅 오퍼를 제공할 수 있습니다. 개별 대상자에게 맞춘 콘텐츠를 만들든 AI 기반 순위를 통해 전략을 최적화하든, 결정 기능은 대규모로 데이터 기반 결정을 내릴 수 있는 도구를 제공합니다. 결정 항목, 규칙, 정책과 같은 주요 개념을 살펴보고 이 요소들이 함께 작동하는 방식을 탐색하여 캠페인에 가장 적합한 콘텐츠를 선택하고 우선순위를 둡니다. 컬렉션 및 배치 관리에서 Adobe Experience Platform 데이터 활용에 이르기까지 이 종합 안내서를 통해 보다 스마트한 개인화를 만들고 영향력 있는 고객 경험을 제공할 수 있습니다.

아키텍쳐 {modal="regular"}

의사 결정 기능은 '의사 결정 항목’이라는 중앙 집중식 마케팅 카탈로그와 정교한 의사 결정 엔진을 제공하여 개인화를 간소화합니다. 이 엔진은 규칙과 순위 기준을 활용하여 각 개인에게 가장 관련성 높은 의사 결정 항목을 선택하고 제공합니다. 이러한 의사 결정 항목은 코드 기반 경험, 이메일, SMS, 푸시 알림 등 Adobe Journey Optimizer 채널 전반의 메시지 및 경험에 원활하게 통합됩니다.

이 단원에서는 모바일 앱에서 오퍼를 전달하는 코드 기반 경험 채널 사용에 중점을 둡니다. 또한 Decisioning 솔루션의 모든 기능에 대해 자세히 설명하지 않습니다. 자세한 내용은 Decisioning 설명서를 참조하세요.

NOTE
이 단원은 선택 사항이며, Decisioning 기능을 사용하여 모바일 앱에서 오퍼를 표시하려는 Journey Optimizer 사용자에게만 적용됩니다.

사전 요구 사항

학습 목표

이 단원에서는 다음과 같은 작업을 수행합니다

  • Decisioning용 Edge 구성을 업데이트합니다.
  • 오퍼를 나타내는 스키마를 만듭니다.
  • Assurance에서 설정의 유효성을 검사합니다.
  • 코드 기반 경험 채널 구성을 구성합니다.
  • Journey Optimizer - Decisioning의 오퍼를 기반으로 코드 기반 경험 캠페인을 만듭니다.
  • 앱에서 Decisioning의 오퍼를 구현합니다.

설정

TIP
Target을 사용하여 A/B 테스트 설정 단원의 일부로 환경을 이미 설정한 경우 이 설정 섹션의 일부 단계를 이미 수행했을 수 있습니다.

데이터 스트림 구성 업데이트

모바일 앱에서 Platform Edge Network으로 전송된 데이터가 Decisioning인 Journey Optimizer으로 전달되도록 하려면 데이터스트림을 업데이트합니다.

  1. 데이터 수집 UI에서 데이터스트림​을(를) 선택하고 데이터스트림(예: Luma Mobile App)을 선택합니다.

  2. Experience Platform​에 대해 자세히 를 선택하고 상황에 맞는 메뉴에서 편집 편집​을 선택합니다.

  3. 데이터스트림 > 폴더 > Adobe Experience Platform 화면에서 Offer Decisioning, Edge 세분화Adobe Journey Optimizer​이 활성화되어 있는지 확인합니다.

    • 의사 결정 관리 단원이 아닌 이 의사 결정 단원만 수행할 계획이라면 Offer Decisioning​을 활성화할 필요가 없습니다.
    • Target 단원을 수행하는 경우 Personalization 대상​도 선택하십시오. 자세한 내용은 Adobe Experience Platform 설정을 참조하세요.
  4. 데이터스트림 구성을 저장하려면 저장 을 선택합니다.

    AEP 데이터스트림 구성 {modal="regular"}

스키마 정의

  1. 데이터 수집 인터페이스로 이동하여 왼쪽 레일에서 스키마​를 선택합니다.

  2. 상단 표시줄에서 찾아보기​를 선택합니다.

  3. 개인화된 오퍼 항목 - Experience Decisioning 스키마를 엽니다. 이 스키마는 오퍼 항목, 해당 속성 및 메타데이터를 구성하는 전용 스키마입니다.

  4. Decisioning에서 오퍼를 사용할 방법을 나타내는 추가 필드 그룹을 스키마에 추가합니다. 스키마를 만드는 방법을 이해하려면 스키마 만들기를 참조하세요. 이 단원의 경우 두 개의 필드 그룹이 _techmarketingdemos 샌드박스 구성의 일부로 만들어집니다. 오퍼오퍼 메타데이터. 아래에서 스키마의 전체 구조를 볼 수 있습니다.

    • image 또는 imageLowRes​와 같은 모든 mediaAssets 필드는 DesignAssets 유형이며 자동으로 destinationURL, edgePath, repository, sourceURL, trackedURLtype 문자열 필드가 있습니다.
    • 다른 모든 필드는 Object 유형(예: offerMetadata) 또는 String 유형(예: fullDescription)입니다.

    스키마 경험 의사 결정 {modal="regular"}

    원하는 방식으로 개인화된 오퍼 항목 - Experience Decisioning 스키마를 정의할 수 있습니다. 위의 구조는 이 단원의 나머지 부분에서 사용하는 예제입니다.

  5. 개인화된 오퍼 항목 - Experience Decisioning 스키마에 대한 변경 사항을 저장하려면 저장​을(를) 선택하십시오.

Journey Optimizer 태그 확장 설치

앱이 Journey Optimizer에서 작동하려면 태그 속성을 업데이트해야 합니다.

  1. 태그 > 확장 > 카탈로그(으)로 이동합니다.
  2. 속성을 엽니다(예: Luma Mobile App Tutorial).
  3. 카탈로그​를 선택하십시오.
  4. Adobe Journey Optimizer 확장을 검색합니다.
  5. 확장을 설치합니다.

​이(가) 앱에서 Decisioning을 기반으로 하는 오퍼를 사용하는 경우 확장 설치 또는 확장 구성​에서 아무 것도 구성할 필요가 없습니다. 자습서에서 푸시 알림 단원을 이미 따랐다면 개발 환경의 경우 AJO 푸시 추적 경험 이벤트 데이터 세트 데이터 세트가 이벤트 데이터 세트 목록에서 선택되었음을 알 수 있습니다.

앱에서 Journey Optimizer 구현

이전 단원에서 설명한 대로 모바일 태그 확장을 설치하면 구성만 제공됩니다. 그런 다음 메시징 SDK을 설치하고 등록해야 합니다. 이 단계가 명확하지 않으면 SDK 설치 섹션을 검토하십시오.

NOTE
SDK 설치 섹션을 완료한 경우 SDK이 이미 설치되어 있으므로 이 단계를 건너뛸 수 있습니다.
iOS
  1. Xcode에서 AEP Messaging이(가) 패키지 종속 항목의 패키지 목록에 추가되어 있는지 확인하십시오. Swift 패키지 관리자를 참조하세요.

  2. Xcode 프로젝트 탐색기에서 Luma > Luma > AppDelegate(으)로 이동합니다.

  3. AEPMessaging이(가) 가져오기 목록의 일부인지 확인하십시오.

    import AEPMessaging

  4. Messaging.self이(가) 등록 중인 확장 배열의 일부인지 확인하십시오.

    code language-swift
    let extensions = [
        AEPIdentity.Identity.self,
        Lifecycle.self,
        Signal.self,
        Edge.self,
        AEPEdgeIdentity.Identity.self,
        Consent.self,
        UserProfile.self,
        Places.self,
        Messaging.self,
        Optimize.self,
        Assurance.self
    ]
    
Android
  1. Android Studio에서 aepsdk-messaging-android이(가) Android V자 전환 > Gradle Scripts​의 build.gradle.kts​에 있는 종속성의 일부인지 확인하십시오. Gradle을(를) 참조하세요.

  2. Android Studio 프로젝트 탐색기에서 Android VDown app > kotlin+java > com.adobe.luma.tutorial.android > LumaApplication​으로 이동합니다.

  3. com.adobe.marketing.mobile.Messaging이(가) 가져오기 목록의 일부인지 확인하십시오.

    import import com.adobe.marketing.mobile.Messaging

  4. Messaging.EXTENSION이(가) 등록 중인 확장 배열의 일부인지 확인하십시오.

    code language-kotlin
    val extensions = listOf(
        Identity.EXTENSION,
        Lifecycle.EXTENSION,
        Signal.EXTENSION,
        Edge.EXTENSION,
        Consent.EXTENSION,
        UserProfile.EXTENSION,
        Places.EXTENSION,
        Messaging.EXTENSION,
        Optimize.EXTENSION,
        Assurance.EXTENSION
    )
    

Assurance에서 설정 유효성 검사

Assurance에서 Decisioning 설정에 대한 유효성을 검사할 필요가 없습니다. Decisioning에서는 특정 Experience Platform 데이터 수집 태그 확장을 사용하지 않으며 앱에 대한 추가 패키지가 필요하지 않습니다. Decisioning은 앱의 메시징 확장을 사용합니다. 이 확장은 이 자습서에서 Adobe Experience Platform Mobile SDK 설치인앱 메시지 만들기 및 보내기 단원의 일부로 이미 추가했어야 합니다.

코드 기반 경험 채널 구성 만들기

앱의 화면에 오퍼를 표시하려면 전용 코드 기반 경험 채널을 구성해야 합니다. 이 코드 기반 경험 채널은 오퍼를 표시하는 앱의 표면(위치)을 정의합니다.

코드 기반 경험 채널을 만들려면

  1. Journey Optimizer UI의 왼쪽 레일에서 관리​에서 채널 채널​을 선택합니다.

  2. 일반 설정​에서 채널 구성​을 선택하십시오.

  3. 채널 구성 만들기​를 선택합니다.

  4. 채널 구성 세부 정보​에서:

    채널 구성 세부 정보

    1. 이름​을(를) 입력하십시오. 예: LumaMobileAppCodeBased.

    2. 설명​을 입력하십시오. 예: Code-based experience for Luma app used in Mobile SDK tutorial.

    3. 채널 선택 드롭다운 메뉴에서 코드 기반 경험​을 선택합니다.

    4. 하나 이상의 마케팅 작업을 선택하십시오. 예: 온사이트 Personalization.

    5. 코드 기반 경험을 구성할 플랫폼을 선택합니다. 이 자습서에서는 iOS 또는 Android 또는 둘 다를 선택하십시오.

      • iOS​의 경우:

        1. 선택한 앱 ID​을(를) 입력하십시오. 예를 들어 앱의 식별자는 com.adobe.luma.tutorial.swiftui입니다.
        2. 앱 내부의 위치 또는 경로 선택​을(를) 입력하십시오. 예: offersLocation.
        3. 미리 보기 URL​을(를) 입력하십시오. 예: lumatutorialswiftui://.
      • Android​의 경우:

        1. 선택한 앱 ID​을(를) 입력하십시오. 예를 들어 앱의 식별자는 com.adobe.luma.tutorial.android입니다.
        2. 앱 내부의 위치 또는 경로 선택​을(를) 입력하십시오. 예: offersLocation.
        3. 미리 보기 URL​을(를) 입력하십시오. 예: lumatutorialandroid://default.
      • 콘텐츠

        • 형식​에 대해 JSON​을(를) 선택하십시오.
  5. 코드 기반 경험을 제출하려면 제출​을 선택하십시오.

오퍼 만들기

이 섹션에서는 Decisioning에 대한 오퍼를 만듭니다.

  1. Journey Optimizer UI의 왼쪽 레일에서 의사 결정​에서 의사 결정 항목 카탈로그​를 선택합니다.

  2. 오퍼 목록을 보려면 카탈로그​에서 오퍼​을(를) 선택하십시오.

  3. 항목 만들기​를 선택합니다.

    1. 오퍼(결정 항목)를 만드는 ➊ 특성 단계에서:

      Decisioning의 오퍼에 대한 특성 {modal="regular"}

      1. 표준 특성 섹션에서:

        1. 오퍼 이름​을(를) 입력하십시오. 예: Luma - Desiree Fitness Tee.
        2. 시작 날짜​를 입력하거나 달력 을 사용하여 날짜를 선택하세요. 예: 7/1/2026, 12:00 AM.
        3. 종료 날짜​를 입력하거나 달력 을 사용하여 날짜를 선택하세요. 예: 12/31/2026, 12:00 AM.
        4. 우선 순위​를 입력하십시오. 예: 10.
        5. 태그 드롭다운 메뉴에서 적절한 태그를 하나 이상 선택합니다. 예: Luma - 모바일 앱.
      2. 사용자 지정 특성 섹션에서 오퍼 콘텐츠 및 메타데이터의 값을 입력하십시오. 입력할 수 있는 데이터와 해당 데이터를 입력하는 방법은 오퍼에 대해 스키마를 정의한 방법에 따라 완전히 결정됩니다. 이 자습서에서는 각 오퍼의 제목, 텍스트 및 이미지를 제공합니다.

        1. Offer 컨테이너의 Media Assets 하위 컨테이너 내:

          1. 이미지​에 대해 URL에서 추가​를 선택하고 E​ 소스 URL ​에 적절한 값을 입력하십시오. 예: https://newluma.enablementadobe.com/images/ws05-yellow_main.jpg.
          2. 이미지(고해상도)​에 대해 URL에서 추가​를 선택하고 소스 URL 입력​에 적절한 값을 입력하십시오. 예: https://newluma.enablementadobe.com/images/ws05-yellow_main.jpg.
        2. Offer 컨테이너의 Text 하위 컨테이너 내에서 다음을 수행합니다.

          1. 전체 설명​의 값을 입력하십시오. 예: When you're too far to turn back, thank yourself for choosing the Desiree Fitness Tee. Its ultra-lightweight, ultra-breathable fabric wicks sweat away from your body and helps keeps you cool for the distance.
          2. 제목​의 값을 입력하십시오. 예: Desiree Fitness Tee.
      3. 다음​을 선택합니다.

    2. 오퍼(결정 항목)를 만드는 ➋ 적격성 단계에서:

      오퍼 항목 만들기 - 자격 요건 {modal="regular"}

      1. 자격​에서 모든 방문자​를 선택했는지 확인하십시오.
      2. 캡핑 섹션에서 캡핑을 만들 필요가 없습니다.
      3. 다음​을 선택합니다.
    3. ➌ 검토 단계에서 오퍼(결정 항목)를 만드는 작업:

      오퍼 항목 만들기 - 검토 {modal="regular"}

      1. 오퍼를 검토합니다. 편집 을 사용하여 표준 특성, 고객 특성 또는 프로필 제약 조건​을 변경할 수 있습니다.
      2. 저장​을 선택합니다.
  4. 다음 추가 오퍼에 대해 3단계(항목 만들기)를 반복합니다.

    table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4
    이름 제목 전체 설명 이미지 및 이미지(고해상도)
    Luma - Affirm Water Bottle Affirm Water Bottle You'll stay hydrated with ease with the Affirm Water Bottle by your side or in hand. Measurements on the outside help you keep track of how much you're drinking, while the screw-top lid prevents spills. A metal carabiner clip allows you to attach it to the outside of a backpack or bag for easy access. https://newluma.enablementadobe.com/images/ug06-lb-0.jpg
    Luma - Aero Daily Fitness Tee Aero Daily Fitness Tee Need an everyday action tee that helps keep you dry? The Aero Daily Fitness Tee is made of 100% polyester wicking knit that funnels moisture away from your skin. Don't be fooled by its classic style; this tee hides premium performance technology beneath its unassuming look. https://newluma.enablementadobe.com/images/ms01-black_main.jpg
    Luma - Adrienne Trek Jacket Adrienne Trek Jacket You're ready for a cross-country jog or a coffee on the patio in the Adrienne Trek Jacket. Its style is unique with stand collar and drawstrings, and it fits like a jacket should. https://newluma.enablementadobe.com/images/wj08-gray_main.jpg
    Luma - Juno Jacket Juno Jacket On colder-than-comfortable mornings, you'll love warming up in the Juno All-Ways Performanc Jacket, designed to compete with wind and chill. Built-in Cocona™ technology aids evaporation, while a special zip placket and stand-up collar keep your neck protected. https://newluma.enablementadobe.com/images/wj06-purple_main.jpg

    시작 날짜, 종료 날짜, 우선 순위, 한도, 자격 요건 및 위의 표에 명시적으로 정의되지 않은 기타 값과 같은 다른 모든 값은 모든 오퍼에서 동일해야 하며 첫 번째 오퍼에 대해 정의한 내용을 기반으로 합니다.

이제 다음 오퍼 목록이 있어야 합니다.

오퍼 목록 {modal="regular"}

컬렉션 만들기

모바일 앱 사용자에게 오퍼를 제공하려면 만든 하나 이상의 오퍼로 구성된 오퍼 컬렉션을 만들어야 합니다. 규칙을 사용하여 컬렉션에 속한 오퍼를 선택합니다.

  1. Journey Optimizer UI의 왼쪽 레일에서 의사 결정​에서 의사 결정 항목 카탈로그​를 선택합니다.

  2. 컬렉션 목록을 보려면 카탈로그​에서 컬렉션​을(를) 선택하십시오.

  3. 컬렉션 만들기​를 선택합니다.

  4. 세부 정보 섹션에서:

    1. 컬렉션에 사용할 이름​을(를) 입력하십시오. 예: Luma - Mobile App Collection.
    2. 컬렉션에 대한 설명​을 입력하십시오. 예: Collection of Luma mobile app offers.
  5. 컬렉션 규칙 섹션에서 항목 수 아래에 있는 항목:

    1. 결정 항목을 만들려면 클릭… 선택

    2. 특성을 선택하려면 특성 선택​을 사용하세요.

      1. 특성 선택 대화 상자에서 결정 특성​을 선택합니다. 예: 오퍼 이름.
      2. 저장​을 선택합니다.
    3. 같음 드롭다운 메뉴를 사용하여 조건을 선택하십시오. 예: 다음으로 시작.

    4. 텍스트 필드에 조건에 대한 값을 입력합니다. 예: Luma -. 이 값은 이름이 Luma -(으)로 시작하는 모든 오퍼를 선택하여 컬렉션에 포함시킵니다. AddCircle Add 규칙을 사용하여 모든 종류의 규칙을 만들고 규칙을 결합할 수 있습니다.

  6. 컬렉션을 만들려면 만들기​를 선택하십시오.

    오퍼 - 컬렉션 {modal="regular"}

선택 전략 만들기

선택 전략은 재사용이 가능하며, 의사 결정 정책에서 선택할 때 표시할 오퍼를 결정하는 자격 제한 및 등급 방법과 관련된 컬렉션으로 구성됩니다. 결정 정책은 캠페인 만들기 섹션에 설명되어 있습니다.

이 구현에서 선택 전략은 가능한 한 단순하게 유지합니다.

  1. Journey Optimizer UI의 왼쪽 레일에서 의사 결정​에서 전략 전략 설정​을 선택합니다.

  2. 선택 전략​을 선택하세요.

  3. 선택 전략 만들기​를 선택합니다. 선택 전략 만들기 대화 상자에서 다음을 수행합니다.

    1. 선택 전략 이름​을 입력하십시오. 예: Luma - Mobile App Selection Strategy.

    2. 선택 전략에 사용할 컬렉션을 선택하려면 컬렉션 선택​을 사용합니다.

      1. 컬렉션 대화 상자에서 컬렉션을 선택합니다. 예: Luma - 모바일 앱 컬렉션.
      2. 저장​을 선택합니다.
    3. 모든 방문자​가 자격 요건​에 대해 선택되었는지 확인하십시오.

    4. 순위 메서드​에 대해 오퍼 우선 순위​이(가) 선택되어 있는지 확인하십시오.

  4. 선택 전략을 만들려면 만들기​를 선택하십시오.

    선택 전략 만들기

캠페인 만들기

이제 오퍼 컬렉션과 코드 기반 경험 구성 채널을 모두 사용하는 캠페인을 만듭니다. 캠페인은 하나 이상의 채널에서 특정 대상에게 콘텐츠를 제공하는 조정된 마케팅 작업입니다.

캠페인의 일부로 의사 결정 정책도 만듭니다. 의사 결정 정책은 의사 결정 엔진을 활용하여 각 대상자 구성원에게 제공할 최상의 콘텐츠를 동적으로 반환하는 오퍼 컨테이너입니다. 이 프로필의 목표는 각 프로필에 가장 적합한 오퍼를 선택하는 것이며, 캠페인/여정 작성에서는 메시지에 포함할 항목 속성을 포함하여 선택한 결정 항목을 표시하는 방법을 나타낼 수 있습니다.

  1. Journey Optimizer UI의 왼쪽 레일에서 여정 관리​에서 Claxon 캠페인​을(를) 선택합니다.

  2. 캠페인 만들기​를 선택합니다.

  3. 캠페인 만들기 대화 상자에서 만들려는 캠페인 유형으로 예약됨 - 마케팅​을 선택합니다.

  4. 확인​을 선택합니다.

  5. 캠페인 - 타임스탬프​​화면의​ 속성​ ​탭에서:

    1. 캠페인에 대한 이름​을(를) 입력하십시오. 예: Luma - Mobile App Offers.
    2. 필요한 경우 설명​을 입력하십시오.
  6. 작업​을 선택하세요.

    1. 작업 섹션에서:

      1. 추가 작업 추가​를 선택합니다. 드롭다운 메뉴에서 코드 코드 기반 경험​을 선택합니다.
      2. 코드 기반 경험 작업 구성 섹션의 코드 기반 경험 채널 구성 드롭다운 메뉴에서 코드 기반 경험 채널 구성 LumaMobileAppCodeBased​을(를) 선택합니다.
    2. 최적화, 언어충돌 관리​에 대한 다른 모든 설정을 변경하지 마십시오.

  7. 컨텐츠​를 선택하십시오.

    1. 코드 기반 경험 화면에서 편집 코드 편집​을 선택합니다.

    2. 코드 기반 환경에서 | 채널 구성 : LumaMobileAppCodeBased 화면:

      1. 편집기에서 다음 JSON을 입력합니다.

        code language-json
        {
           "version": "1.0",
           "offers": [
           ]
        }
        
      2. 두 번째 왼쪽 레일에서 DecisionItemsConfiguration Decision policy​을(를) 선택합니다.

        1. DecisionItemsConfiguration 결정 정책 추가​를 선택합니다.

        2. 의사 결정 정책 만들기 대화 상자 마법사의 ➊ 세부 정보 단계에서 다음을 수행합니다.

          1. 결정 정책에 대해 이름​을(를) 입력하십시오. 예: Luma - Mobile App Decision Policy.
          2. 항목 수​에 대해 2을(를) 선택하거나 입력하십시오. 이 항목은 두 개의 오퍼가 반환되도록 합니다.
          3. 다음​을 선택합니다.
        3. 의사 결정 정책 만들기 대화 상자 마법사의 ➋ 전략 단계에서 다음을 수행합니다.

          1. 전략 시퀀스​에서 AddCircle Add​를 선택하여 전략 시퀀스를 추가합니다.

          2. 상황에 맞는 메뉴에서 선택 전략​을 선택합니다.

            1. 선택 전략 추가 대화 상자에서 이전에 만든 선택 전략, Luma - 모바일 앱 선택 전략​을 선택합니다.
            2. 저장​을 선택합니다.
          3. 다음​을 선택합니다.

        4. 의사 결정 정책 만들기 대화 상자 마법사의 ➌ 검토 단계에서 의사 결정 정책을 검토합니다.

          1. 결정 정책을 만들려면 만들기​를 선택하십시오.
      3. 이제 의사 결정 정책을 사용할 수 있으므로 Luma - 모바일 앱 의사 결정 정책 레일을 사용하여 해당 의사 결정 정책의 적절한 요소를 JSON 편집기에 삽입할 수 있습니다.

        1. JSON 편집기에서 [과(와) ] 사이에 새 행을 추가합니다.

        2. Luma - 모바일 앱 결정 정책 레일에서:

          1. 편집기에서 결정 정책을 JSON으로 삽입하려면 추가 정책 삽입​을 선택하십시오.
          2. {{/each}}을(를) 닫는 앞 줄에 커서를 놓습니다..
          3. tenant-name(예: _techmarketingdemos) > 오퍼 > 텍스트 콘텐츠 > 제목, +​을(를) 선택하십시오. 오퍼의 제목을 JSON에 title 요소로 추가합니다.
          4. 테넌트 이름 > 오퍼 > 텍스트 콘텐츠 > 전체 설명​을 선택한 다음 +​을(를) 선택하십시오. 오퍼에 대한 설명을 JSON에 text 요소로 추가합니다.
          5. tenant-name > Offer > 미디어 자산 > 이미지 > sourceURL​을 선택한 다음 +​을 선택합니다. 이렇게 하면 오퍼의 고해상도 이미지에 대한 소스 URL이 JSON에 image 요소로 추가됩니다.

          최종 JSON은 아래와 유사해야 하며, 결정 정책 식별자 및 테넌트 이름에 대해 업데이트된 값이 있습니다.

          의사 결정 정책을 위한 최종 JSON

          { }을(를) 사용하여 title, textimage JSON 요소가 개체로 래핑되어 있는지 확인합니다. 해당 개체 뒤와 {{/each}} 바로 앞에 ,을(를) 삽입합니다. JSON에서

      4. FileCode Validate​을(를) 사용하여 JSON의 유효성을 검사하십시오.

      5. 저장 후 닫기​를 선택합니다.

  8. 활성화하려면 검토​를 선택하십시오.

  9. 활성화 검토(Luma - 모바일 앱 오퍼) 화면에서 캠페인에 대한 개요를 제공합니다.

    활성화 검토

  10. 경고 또는 오류가 표시되지 않으면 활성화​를 선택하여 캠페인을 활성화하세요. 확인 대화 상자에서 활성화​를 한 번 더 선택합니다.

  11. 캠페인 목록에서 캠페인 상태가 StatusOrange 활성화​에서 StatusOrange 처리​에서 StatusBlue 라이브(으)로 변경되는 것을 볼 수 있습니다.

이제 코드 기반 경험 캠페인이 라이브되므로, 모바일 앱을 업데이트하여 코드 기반 경험 캠페인을 사용하여 코드 기반 경험 채널 구성에 정의된 위치 또는 표면에 오퍼를 렌더링할 수 있습니다.

앱에서 오퍼 구현

이전 단원에서 설명한 대로 모바일 태그 확장을 설치하면 구성만 제공됩니다. 그런 다음 앱에 대해 메시징 확장이 구성되어 있는지 확인해야 합니다. 이 단계가 명확하지 않으면 SDK 설치 섹션을 검토하십시오.

iOS
  1. Xcode에서 패키지 종속 항목의 패키지 목록에 AEP 메시지가 추가되었는지 확인합니다. Swift 패키지 관리자를 참조하세요.

  2. Xcode 프로젝트 탐색기에서 Luma > Luma > AppDelegate(으)로 이동합니다.

  3. AEPMessaging이(가) 가져오기 목록의 일부인지 확인하십시오.

    code language-swift
    import AEPMessaging
    
  4. Messaging.self이(가) 등록 중인 확장 배열의 일부인지 확인하십시오.

    code language-swift
    let extensions = [
        AEPIdentity.Identity.self,
        Lifecycle.self,
        Signal.self,
        Edge.self,
        AEPEdgeIdentity.Identity.self,
        Consent.self,
        UserProfile.self,
        Places.self,
        Messaging.self,
        Optimize.self,
        Assurance.self
    ]
    
  5. Xcode 프로젝트 탐색기에서 Luma > Luma > Model > Data > 일반(으)로 이동합니다. config 섹션에서 showDecisioning이(가) true(으)로 설정되고 showPersonalization이(가) false(으)로 설정되었는지 확인하십시오.

    code language-json
    ...
    "showPersonalisation": false,
    "showDecisioning": true,
    ...
    

    이러한 설정은 Decisioning이 앱의 개인화 탭에서 오퍼에 사용되도록 합니다.

  6. Xcode 프로젝트 탐색기에서 Luma > Luma > Model > Data > 일반(으)로 이동합니다. 코드 기반 경험 채널에 대해 구성한 위치 또는 표면을 식별하여 surface 요소가 있는 decisioning 섹션이 구성되어 있는지 확인합니다. 예: offersLocation.

    code language-json
    "decisioning": {
       "surface": "offersLocation"
    },
    
  7. Xcode 프로젝트 탐색기에서 Luma > Luma > Utils > MobileSDK(으)로 이동합니다. func updatePropositionsForSurface() 함수를 찾습니다. 다음 코드를 추가합니다.

    code language-swift
    // get the propositions for the surfaces configured.
    Logger.aepMobileSDK.info("MobileSDK - updatePropositionsForSurfaces: Updating \(surfaces.count) surface(s)")
    for surface in surfaces {
       Logger.aepMobileSDK.info("MobileSDK - updatePropositionsForSurfaces: Surface URI: \(surface.uri)")
    }
    
    // Call the Messaging extension API to fetch propositions
    Messaging.updatePropositionsForSurfaces(surfaces)
    
    Logger.aepMobileSDK.info("MobileSDK - updatePropositionsForSurfaces: Update triggered successfully")
    

    이 함수:

    • 서피스에 대한 제안을 가져옵니다.

    이 구현에서는 하나의 표면만 구성되어 사용됩니다. 구성된 여러 서피스를 처리하려면 코드를 업데이트해야 합니다.

  8. Xcode 프로젝트 탐색기에서 Luma > Luma > Views > Personalization > EdgeDecisioningOffersView(으)로 이동합니다. func fetchPropositions() async 함수를 찾아 이 함수의 코드를 검사합니다. 이 함수에서 가장 중요한 부분은 Messaging.getPropositionsForSurfaces([surface]) { propositionsDict, error in API 호출이며,

    • 서피스를 기준으로 현재 프로파일의 제안을 읽어들입니다.
    • 제안에서 오퍼를 검색합니다.
    • 앱에서 제대로 표시될 수 있도록 오퍼의 콘텐츠(parseCodeBasedContent 함수 사용)를 래핑 해제합니다.
  9. 아직 EdgeDecisioningOffersView​에 있습니다. task에서 방법을 확인하세요. 수정자:

    1. self.updatePropositionsForSurface()을(를) 사용하여 제안이 업데이트됩니다.
    2. Edge 네트워크가 제안에 응답하고 캐시하기 위해 간단한 기다림이 구현됩니다.
    3. 캐시된 제안을 await self.fetchPropositions을(를) 사용하여 가져옵니다.
Android
  1. Android Studio에서 aepsdk-optimize-android이(가) Android VDown > Gradle Scripts​의 build.gradle.kts(모듈 :app)​에 있는 종속성의 일부인지 확인하십시오. Gradle을(를) 참조하세요.

  2. Android Studio 탐색기에서 Android VDown > app > kotlin+java > com.adobe.luma.tutorial.android > MainActivity(으)로 이동합니다.

  3. Optimize이(가) 가져오기 목록의 일부인지 확인하십시오.

    code language-kotlin
    import com.adobe.marketing.mobile.optimize.Optimize
    
  4. Optimize.EXTENSION이(가) 등록 중인 확장 배열의 일부인지 확인하십시오.

    code language-kotlin
    val extensions = listOf(
       Identity.EXTENSION,
       Lifecycle.EXTENSION,
       Signal.EXTENSION,
       Edge.EXTENSION,
       Consent.EXTENSION,
       UserProfile.EXTENSION,
       Places.EXTENSION,
       Messaging.EXTENSION,
       Optimize.EXTENSION,
       Assurance.EXTENSION
    )
    
  5. Project Navigator에서 Android V자형 화살표 > app > assets > data > general.json(으)로 이동합니다. config 섹션에서 showDecisioning이(가) true(으)로 설정되고 showPersonalization이(가) false(으)로 설정되었는지 확인하십시오.

    code language-json
    ...
    "showPersonalisation": false,
    "showDecisioning": true,
    ...
    

    이러한 설정은 Decisioning이 앱의 개인화 탭에서 오퍼에 사용되도록 합니다.

  6. Project Navigator에서 Android V자형 화살표 > app > assets > data > general.json(으)로 이동합니다. 코드 기반 경험 채널에 대해 구성한 위치 또는 표면을 식별하여 surface 요소가 있는 decisioning 섹션이 구성되어 있는지 확인합니다. 예: offersLocation.

    code language-json
    "decisioning": {
       "surface": "offersLocation"
    },
    
  7. Android Studio 탐색기에서 Android VDown > app > kotlin+java > com.adobe.luma.tutorial.android > 모델 > MobileSDK(으)로 이동합니다. suspend fun updatePropositionsForSurfaces(surfaces: List<Surface>) 함수를 찾습니다. 다음 코드를 추가합니다.

    code language-kotlin
    // get the propositions for the surfaces configured
    withContext(Dispatchers.IO) {
       Log.i("MobileSDK", "updatePropositionsForSurfaces: Updating ${surfaces.size} surface(s)")
       surfaces.forEach { surface ->
          Log.i("MobileSDK", "updatePropositionsForSurfaces: Surface URI: ${surface.uri}")
       }
    
       Messaging.updatePropositionsForSurfaces(surfaces)
       Log.i("MobileSDK", "updatePropositionsForSurfaces: Update triggered successfully")
    }
    

    이 함수:

    • 서피스에 대한 제안을 가져옵니다.

    이 구현에서는 하나의 표면만 구성되어 사용됩니다. 구성된 여러 서피스를 처리하려면 코드를 업데이트해야 합니다.

  8. 프로젝트 탐색기에서 Android VDown > app > kotlin+java > com.adobe.luma.tutorial.android > 보기 > EdgeDecisioningOffersView.kt(으)로 이동합니다. suspend fun fetchPropositionsForSurface(surface: Surface): DecisioningResult = withContext(Dispatchers.IO) 함수를 찾아 이 함수의 코드를 검사합니다. 이 함수에서 가장 중요한 부분은 Messaging.getPropositionsForSurfaces(listOf(surface)) { propositionsMap -> propositionsMap[surface]?.let { propositions -> API 호출이며,

    • 서피스를 기준으로 현재 프로파일의 제안을 읽어들입니다.
    • 제안에서 오퍼를 검색합니다.
    • 앱에서 제대로 표시될 수 있도록 오퍼의 콘텐츠(parseCodeBasedContent 함수 사용)를 래핑 해제합니다.
  9. EdgeDecisioningOffersView.kt​에서 LaunchedEffect 함수에서 방법을 확인하세요.

    1. MobileSDK.shared.updatePropositionsForSurfaces(listOf(surface))을(를) 사용하여 제안이 업데이트됩니다.
    2. Edge 네트워크가 제안에 응답하고 캐시하기 위해 간단한 지연이 구현됩니다.
    3. 캐시된 제안을 fetchPropositionsForSurface(surface)을(를) 사용하여 가져옵니다.

앱을 사용하여 유효성 검사

iOS
  1. 재생 을 사용하여 시뮬레이터나 Xcode의 실제 장치에서 앱을 다시 빌드하고 실행합니다.

  2. Personalization 탭으로 이동합니다.

  3. 맨 위로 스크롤하면 Surface Offers Location 타일에서 정의한 컬렉션에서 두 개의 무작위 오퍼가 표시됩니다.

    {width="300"}

    모든 오퍼에 동일한 우선 순위를 부여했으므로 오퍼는 임의이며 오퍼 순위는 우선 순위를 기반으로 합니다.

Android
  1. 재생 을 사용하여 시뮬레이터 또는 Android Studio의 실제 장치에서 앱을 다시 빌드하고 실행합니다.

  2. Personalization 탭으로 이동합니다.

  3. 맨 위로 스크롤하면 Surface Offers Location 타일에서 정의한 컬렉션의 맨 위 상자에 두 개의 무작위 오퍼가 표시됩니다.

    {width="300"}

    모든 오퍼에 동일한 우선 순위를 부여했으므로 오퍼는 임의이며 오퍼 순위는 우선 순위를 기반으로 합니다.

Assurance에서 구현의 유효성 검사

Assurance에서 오퍼 구현의 유효성을 검사하려면:

  1. 설치 지침 섹션을 검토하여 시뮬레이터 또는 장치를 Assurance에 연결하십시오.

  2. 왼쪽 레일에서 이벤트​를 선택합니다.

  3. 이벤트 목록에서 메시지 제안 응답 이벤트를 찾습니다.

  4. 오른쪽 창에서 다음 이벤트를 펼칩니다. ACPExtensionEventData > 제안 > 0 > 항목 > 0 > 데이터 > 콘텐츠 > 오퍼. 예상한 데이터가 있는 오퍼가 각각 0​과(와) 1​입니다.

    Decisioning 오퍼 확인

다음 단계

이제 Journey Optimizer - Decisioning 구현에 더 많은 기능을 추가할 수 있는 모든 도구가 있어야 합니다. 예:

  • 오퍼에 다른 매개 변수 적용(예: 우선 순위, 최대 가용량)
  • 앱에서 프로필 특성을 수집하고(프로필 참조) 이 프로필 특성을 사용하여 대상자를 빌드합니다. 그런 다음 이러한 대상을 의사 결정의 자격 규칙의 일부로 사용합니다.
  • 두 개 이상의 서피스를 결합합니다.
SUCCESS
Decisioning을 사용하여 오퍼를 표시하도록 앱을 활성화했습니다.
Adobe Experience Platform Mobile SDK에 대해 학습하는 데 시간을 투자해 주셔서 감사합니다. 질문이 있거나 일반적인 피드백을 공유하고 싶거나 향후 콘텐츠에 대한 제안이 있는 경우 이 Experience League 커뮤니티 토론 게시물에서 공유하십시오.

다음: A/B 테스트 수행

recommendation-more-help
platform-learn-help-tutorial-mobile-sdk