mParticle에 Singular SDK 통합

싱귤러 SDK는 엠파티클용 키트로 제공됩니다. 키트를 통합하면, 엠파티클은 앱에서 싱귤러로 세션을 전달하고, 관련성이 있는 경우 싱귤러의 앱 인스톨 어트리뷰션 프로세스를 트리거합니다.

옵션 기능으로는 인앱 이벤트 전달, 수익 추적, SKAdNetwork 지원(iOS 기기), 딥링크 및 디퍼드 딥링크 처리 등이 있습니다.

가이드 엔지니어링 팀
전제조건 이 문서에서는 앱에이미 mParticle SDK가 통합되어있다고 가정합니다.

iOS 통합을 위한 단계

1

싱귤러 SDK 키 받기

싱귤러 계정에서 "개발자 도구 > SDK 통합 > SDK 키"로 이동하여 SDK 키와 시크릿을 복사합니다.

Screen_Shot_2022-10-11_at_15.30.07.png

2

Singular를 mParticle 출력으로 추가하기

  1. 엠파티클 계정에서 설정 > 출력으로이동하여 이벤트 출력 추가를 클릭합니다.
  2. 드롭다운 목록에서 단수를 선택합니다.
  3. 이벤트 구성 창에서 구성 이름을 입력하고 이전 단계에서 복사한 싱글 키와 시크릿을 입력합니다.
  4. 저장을 클릭합니다.

image__2_.png

3

Singular SDK 설치하기

싱글 SDK를 설치합니다:

  1. 앱에서 라이브러리와 바이너리 링크에 AdServices.framework를 추가하고 선택 사항으로 표시합니다(iOS 14.3 이상 기기에서만 사용 가능).
  2. 앱의 포드파일에 싱글 MParticle 파드를 추가합니다:

    pod 'mParticle-Singular'
  3. 포드파일의 디렉토리에서 'pod install'을 실행합니다.
4

Singular 라이브러리 가져오기

Singular 라이브러리를 가져오려면 다음 코드 줄을 추가합니다:

#import "MPKitSingular.h"
5

Singular SDK 초기화

SDK 초기화 코드는 앱을 열 때마다 호출되어야 합니다. 이는 모든 싱귤러 어트리뷰션 기능의 전제 조건이며, 새 사용자 세션을 싱귤러로 전송합니다(세션은 사용자 리텐션을 계산하는 데 사용됨).

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      //initialize mParticle 
      MParticleOptions *options = [MParticleOptions optionsWithKey:@"<MPARTICLE_KEY>" secret:@"<MPARTICLE_SECRET>"];
      [[MParticle sharedInstance] startWithOptions:options]; 
      return YES; 
  }
6

[선택 사항] 이벤트 추적

싱귤러는 인앱 이벤트에 대한 데이터를 수집하여 캠페인의 성과를 분석하고 KPI를 측정할 수 있습니다.

애플리케이션에 따라 사용자 로그인, 등록, 튜토리얼 완료 또는 게임 레벨 업과 같은 이벤트를 추적할 수 있습니다.

다음 샘플 코드는 두 개의 사용자 지정 속성과 함께 "event_name"이라는 이벤트를 Singular에 보고합니다. 싱귤러 보고서에서 "event_name" 발생 횟수를 확인할 수 있습니다.

MPEvent *event = [[MPEvent alloc] initWithName:@"event_name"
      type:MPEventTypeTransaction];
  event.customAttributes = @{@"category":@"Destination Intro",
      @"title":@"Paris"};
  [[MParticle sharedInstance] logEvent:event];
7

[선택 사항] 수익 추적

싱귤러는 앱을 통해 얻은 수익에 대한 데이터를 수집하여 캠페인의 성과와 ROI를 분석하는 데 도움을 줄 수 있습니다.

싱귤러는 보고서, 로그 내보내기 및 포스트백에서 데이터를 사용할 수 있도록 합니다.

수익을 추적하려면 다음 예시와 같이 수익 이벤트를 Singular에 보고하세요. 이 예시는 제품의 인앱 구매를 보고하며, 제품 이름, SKU, 수량 및 가격을 제공합니다.

// 1. Create the products
  MPProduct *product = [[MPProduct alloc] initWithName:@"product_name" sku:@"product_sku" quantity:@10     
                                                price:@100.00];
  // 2. Summarize the transaction
  MPTransactionAttributes *attributes = [[MPTransactionAttributes alloc] init];
  attributes.transactionId = @"ransaction_id";
  attributes.revenue = @400.00;
  attributes.tax = @10.00;
  
  // 3. Log the purchase event
  MPCommerceEventAction action = MPCommerceEventActionPurchase;
  MPCommerceEvent *revenueEvent = [[MPCommerceEvent alloc] initWithAction:action product:product];
  revenueEvent.transactionAttributes = attributes;
  [[MParticle sharedInstance] logEvent:revenueEvent];

참고: 통화를 세 글자로 된 ISO 4217 통화 코드(예: 'USD', 'EUR', 'INR')로 전달하세요.

8

[선택 사항] SKAdNetwork 지원 추가하기

SKAdNetwork는 최종 사용자의 개인정보를 침해하지 않고 모바일 인스톨 어트리뷰션을 결정하기 위한 Apple의 새로운 프레임워크입니다.

SKAdNetwork를 사용하면 사용자의 개인 식별 정보를 공유하지 않고도 앱 마케팅 캠페인의 성과를 측정할 수 있습니다.

SKAdNetwork의 단일 솔루션인 SKAN을 사용하면 최소한의 엔지니어링 작업으로 SKAdNetwork를 구현할 수 있습니다. SKAN을 초기화하면, 싱귤러에 보고하는 모든 이벤트가 서버 측에서 자동으로 처리되어 미리 정의된 전환 모델에 따라 전환 수치를 업데이트합니다. 그런 다음 새 전환 값이 앱으로 다시 전송됩니다. 이 과정은 측정 기간이 끝나고 앱이 최신 전환 값을 SKAdNetwork에 전송할 때까지 반복됩니다.

자세한 내용은 싱귤러의 SKAdNetwork 솔루션 소개SKAdNetwork 시작하기를 참조하세요.

다음 샘플 코드는 ATT 동의를 60초간 기다린 후 SKAN을 활성화합니다( Singular iOS SDK: 앱 트래킹 투명성 동의 처리하기 참조).

참고: 이 코드는 mParticle이 초기화되기 전에 실행해야합니다.

[MPKitSingular setSKANOptions:YES isManualSkanConversionManagementMode:NO 
      withWaitForTrackingAuthorizationWithTimeoutInterval:@60.0 
      withConversionValueUpdatedHandler:^(NSInteger conversionValue) {
                    NSLog(@"conversion value %ld", conversionValue);
  }];
9

[선택 사항] 딥링크 처리

딥링크는 앱 내부의 특정 콘텐츠로 연결되는 링크입니다. 사용자가 앱이 설치된 기기에서 딥링크를 클릭하면 앱이 열리고 특정 제품이나 경험이 표시됩니다.

단일 추적 링크에는 딥링킹과 디퍼드 딥링킹이포함될 수 있습니다(자세한 내용은 딥링킹FAQ 및 단일 링크 FAQ참조).

참고:

앱 델리게이트를 사용하여 딥링크 처리하기:

SDK 초기화 메서드에 onAttributionComplete를 포함한 호출을 추가합니다:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      //initialize mParticle 
      MParticleOptions *options = [MParticleOptions optionsWithKey:@"<MPARTICLE_KEY>" secret:@"<MPARTICLE_SECRET>"];
      options.proxyAppDelegate = NO; 
      [[MParticle sharedInstance] startWithOptions:options]; 
      return YES; 
  }

또한 앱디렉티브의 계속 사용자 활동에서 mParticle의 계속 사용자 활동 메서드 호출을 추가합니다:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { [[MParticle sharedInstance] continueUserActivity:userActivity restorationHandler:restorationHandler]; return YES; }

장면 델리게이트를 사용하여 딥 링크 처리하기:

SceneDelegate의 계속 사용자 활동 및 willConnectToSession에서 mParticle의 계속 사용자 활동 메서드에 대한 호출을 추가합니다:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session 
options:(UISceneConnectionOptions *)connectionOptions { NSUserActivity* userActivity = [[[connectionOptions userActivities] allObjects] firstObject]; [[MParticle sharedInstance] continueUserActivity:userActivity restorationHandler:nil]; } - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity{ [[MParticle sharedInstance] continueUserActivity:userActivity restorationHandler:nil]; }

안드로이드 통합을 위한 단계

1

싱귤러 SDK 키 받기

싱귤러 계정에서 "개발자 도구 > SDK 통합 > SDK 키"로 이동하여 SDK 키와 시크릿을 복사합니다.

Screen_Shot_2022-10-11_at_15.30.07.png

2

Singular를 mParticle 출력으로 추가하기

  1. 엠파티클 계정에서 설정 > 출력으로이동하여 이벤트 출력 추가를 클릭합니다.
  2. 드롭다운 목록에서 단수를 선택합니다.
  3. 이벤트 구성 창에서 구성 이름을 입력하고 이전 단계에서 복사한 싱글 키와 시크릿을 입력합니다.
  4. 저장을 클릭합니다.

image__2_.png

3

SDK 설치

  1. 다음과 같이 빌드 스크립트에 Singular의 Maven 서버를 추가합니다. 이는 Singular 키트의 필수 요구 사항입니다.

    repositories {
          maven { url "http://maven.singular.net"}
          ...
      }
  2. 앱의 build.gradle에 키트 종속성을 추가합니다:

    dependencies {
          compile 'com.mparticle:android-singular-kit:5+'
      }
4

SDK 초기화

SDK 초기화 코드는 앱을 열 때마다 호출되어야 합니다. 이는 모든 싱귤러 어트리뷰션 기능의 전제 조건이며, 새 사용자 세션을 싱귤러로 전송합니다(세션은 사용자 리텐션을 계산하는 데 사용됨). 싱귤러 보고서뿐만 아니라 엠파티클 대시보드에서 세션을 추적할 수 있습니다.

//import mParticle
  import com.mparticle.MParticle;
  import com.mparticle.MParticleOptions;
  
  public class ExampleActivity extends Activity {
      @Override
      public void onCreate() {
          super.onCreate();
          MParticleOptions options = MParticleOptions.builder(this)
                  .credentials("REPLACE ME WITH KEY", "REPLACE ME WITH SECRET")
                  .build();
          MParticle.start(options);
      }
  }
5

[선택 사항] 사용자 ID 설정하기

사용자 ID는 사용자 이름, 이메일 주소, 무작위로 생성된 문자열 또는 사용자 ID로 사용하는 모든 식별자가 될 수 있습니다.

Singular는 사용자 수준 데이터 내보내기 및 내부 BI 포스트백(해당 포스트백을 구성한 경우)에서 사용자 ID를 사용합니다.

사용자 ID를 설정하면 모든 세션 및 이벤트와 함께 전송됩니다. 사용자 ID는 설정을 해제하거나 앱을 제거할 때까지 지속됩니다.앱을 닫거나 다시 시작해도 사용자 ID는 설정되지 않습니다.

IdentityApiRequest identityRequest = IdentityApiRequest.withEmptyUser()
          .email("foo@example.com")
          .customerId("123456")
          .build();
  MParticle.getInstance().Identity().login(identityRequest);
6

[선택 사항] 이벤트 추적

싱귤러는 인앱 이벤트에 대한 데이터를 수집하여 캠페인의 성과를 분석하고 KPI를 측정할 수 있습니다.

애플리케이션에 따라 사용자 로그인, 등록, 튜토리얼 완료 또는 게임 레벨 업과 같은 이벤트를 추적할 수 있습니다.

다음 샘플 코드는 "test_event"라는 이벤트를 추가 정보(customAttributes)와 함께 JSONObject 형식으로 Singular에 보고합니다.

Map<String, String> customAttributes = new HashMap<String, String>();
            customAttributes.put("category", "event_category");
            MPEvent event = new MPEvent.Builder("test_event", MParticle.EventType.Navigation)
                   .customAttributes(customAttributes)
                   .build();
            MParticle.getInstance().logEvent(event);
          
7

[선택 사항] 수익 추적

싱귤러는 엠파티클로부터 제품.구매 이벤트를 수신하여 앱을 통해 얻은 수익에 대한 데이터를 수집할 수 있습니다.

이벤트 수익은 수량 * 제품_비용으로 계산됩니다.

Product product = new Product.Builder("extra life", "extra-life", 100.00)
          .quantity(4.0)
          .build();
  TransactionAttributes attributes = new TransactionAttributes("123123")
          .setRevenue(430.00)
          .setTax(30.00);
  
  CommerceEvent event = new CommerceEvent.Builder(Product.PURCHASE, product)
          .transactionAttributes(attributes)
          .currency("USD")
          .build();
  
  MParticle.getInstance().logEvent(event);

참고: 통화를 세 글자 ISO 4217 통화 코드로 전달하세요(예: "USD", "EUR", "INR").

8

[선택 사항] 딥 링크 처리

딥링크는 앱 내의 특정 콘텐츠로 연결되는 링크입니다. 사용자가 앱이 설치된 기기에서 딥링크를 클릭하면 앱이 열리고 특정 제품이나 경험이 표시됩니다.

단일 추적 링크에는 딥링킹과 디퍼드 딥링킹이포함될 수 있습니다(자세한 내용은 딥링킹FAQ 및 단일 링크 FAQ참조).

참고 사항:

  • 앱에 딥링크를 사용하도록 설정하려면 싱글 링크 전제 조건을 참조하세요.
  • 앱의 딥링크 대상은 싱글의 페이지에서 설정해야 합니다( 딥링크 URL 구성 참조).

딥링크를 처리하려면 다음 예시에서와 같이 어트리뷰션 리스너를 구현합니다. 모든 메인 엔트리 활동에서 어트리뷰션 리스너를 구현해야 한다는 점에 유의하세요.

public class ActivityDeeplink extends AppCompatActivity implements AttributionListener {
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          MParticleOptions options = MParticleOptions.builder(this)
                  .credentials("REPLACE ME WITH KEY", "REPLACE ME WITH SECRET")
                  .attributionListener(this)
                  .logLevel(MParticle.LogLevel.VERBOSE)
                  .build();
          MParticle.start(options);
      }
  
      @Override
      public void onResult(@NonNull @NotNull AttributionResult attributionResult) {
          if (attributionResult.getServiceProviderId() == MParticle.ServiceProviders.SINGULAR) {
              String deeplink = attributionResult.getLink();
              JSONObject data = attributionResult.getParameters();
              String passthrough = data.optString("passthrough", null);
              // Deal with deep link
          }
      }
  
      @Override
      public void onError(@NonNull @NotNull AttributionError attributionError) {
          // Deal with error
      }
  }