컨버전 데이터

이 가이드에서는 사용 예제뿐만 아니라 iOS SDK를 사용하여 전환 데이터를 가져오는 방법에 대해 설명합니다.

시작하기 전에

전환 데이터를 가져오려면 먼저 SDK를 연동해야 합니다.

iOS SDK에서 전환 데이터 가져오기

#import "AppDelegate.h"
#import <AppsFlyerLib/AppsFlyerLib.h>

@interface AppDelegate ()
@end
@implementation AppDelegate
    // ...
    -(void)onConversionDataSuccess:(NSDictionary*) installData {
    // Invoked when conversion data resolution succeeds
}
-(void)onConversionDataFail:(NSError *) error {
    // Invoked when conversion data resolution fails
    NSLog(@"%@",error);
}
// ...
@end
import UIKit
import AppsFlyerLib
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, AppsFlyerLibDelegate {
    // ...
    func onConversionDataSuccess(_ installData: [AnyHashable: Any]) {
        // Invoked when conversion data resolution succeeds
    }

    func onConversionDataFail(_ error: Error!) {
        // Invoked when conversion data resolution fails
    }
    // ...
}

onConversionDataSuccess

onConversionDataSuccess is implemented in AppsFlyerLibDelegate.
The onConversionDataSuccess method is invoked whenever:

  • 사용자가 앱을 여는 경우
  • 사용자가 앱을 휴대폰 화면(foreground)으로 이동하는 경우

When invoked, onConversionDataSuccess returns a NSDictionary (called installData in the example) that contains attribution data for that install. installData is cached the first time onConversionDataSuccess is called and will be identical on consecutive calls.

onConversionDataFail

onConversionDataFail is implemented in AppsFlyerLibDelegate.
If for whatever reason the SDK fails to fetch the conversion data, onConversionDataFail is invoked.

어트리뷰션 데이터 액세스하기

You can get the conversion type by checking the value of af_status in onConversionDataSuccess's payload. It can be one of the following values:

  • Organic
  • Non-organic

아래는 구현 예시입니다.

#import "AppDelegate.h"
#import <AppsFlyerLib/AppsFlyerLib.h>
#import <UserNotifications/UserNotifications.h>
@interface AppDelegate ()
@end
@implementation AppDelegate
    // ...
-(void)onConversionDataSuccess:(NSDictionary*) installData {
    // Business logic for Non-organic install scenario is invoked
    id status = [installData objectForKey:@"af_status"];
    if([status isEqualToString:@"Non-organic"]) {
        id sourceID = [installData objectForKey:@"media_source"];
        id campaign = [installData objectForKey:@"campaign"];
        NSLog(@"This is a Non-organic install. Media source: %@  Campaign: %@",sourceID,campaign);
    }

    else if([status isEqualToString:@"Organic"]) {
        // Business logic for Organic install scenario is invoked
        NSLog(@"This is an Organic install.");
    }

}
-(void)onConversionDataFail:(NSError *) error {
    NSLog(@"%@",error);
}
// ...
@end
import UIKit
import AppsFlyerLib
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, AppsFlyerLibDelegate {
    // ...
    func onConversionDataSuccess(_ installData: [AnyHashable: Any]) {
        if let status = installData["af_status"] as? String {
            if (status == "Non-organic") {
                // Business logic for Non-organic install scenario is invoked
                if let sourceID = installData["media_source"],
                let campaign = installData["campaign"] {
                    print("This is a Non-organic install. Media source: \(sourceID)  Campaign: \(campaign)")
                }
            }
            else {
                // Business logic for organic install scenario is invoked
            }
        }
    }

    func onConversionDataFail(_ error: Error!) {
        // Logic for when conversion data resolution fails
        if let err = error{
            print(err)
        }
    }
}

Github 링크

디퍼드 딥링킹(레거시 메서드)

When the app is opened via deferred deep linking, onConversionDataSuccess's payload returns deep linking data, as well as attribution data.