한눈에 보기:
SDK에서 크로스 프로모션 어트리뷰션 구현
참고
일반 모바일 광고는 클릭 시 URL을 활성화합니다. 크로스 프로모션 모바일 광고는 링크가 없고 대신, 클릭 시 앱스플라이어 SDK의 logAndOpenStore 메소드를 활성화합니다.
크로스 프로모션 클릭과 노출은 서로 다른 두 개의 API 호출로 어트리뷰션 합니다. 각 API를 호출할 때 크로스 프로모션 시나리오에 맞는 키 값 맵이 전달될 수 있습니다.
예를 들어, 매개변수 맵을 이용하여 클릭 룩백 윈도우와 ad ID, ad set 같은 매개변수를 설정할 수 있습니다. 캠페인을 보상형 캠페인으로 표시할 수도 있습니다. 앱스플라이어 어트리뷰션 매개변수 에서 확인하세요.
API 메서드에 넘겨주는 표준 매개변수들은 앱스플라이어 어트리뷰션 매개변수에서 확인하세요.
크로스 프로모션한 앱이 처음 실행되면, 모든 매개변수를 SDK의 conversion data API를 통해 확인할 수 있습니다. 안드로이드, iOS conversion data API 확인하기
다음 코드를 이용하여 클릭을 어트리뷰션하고 앱스토어의 앱 페이지를 실행하십시오. 이 코드는 어트리뷰션 링크를 생성하고 생성된 어트리뷰션 링크에 디바이스 광고 ID를 추가합니다.
String campaign = "Cross Promo Campaign";
Map<String, String> parameters = new HashMap();
parameters.put("af_sub1", "val");
parameters.put("custom_param", "val2");
CrossPromotionHelper.logAndOpenStore(this, "com.mygosoftware.android.loginbox", campaign, parameters);iOS에서는 Storekit 컴포넌트를 사용하여 해당 앱에 맞는 앱스토어를 열 수 있습니다. 다음 코드는 StoreKit 클래스를 열어 제대로 초기화되었는지 확인하는 방법을 보여줍니다. StoreKit에 대한 상세한 내용은 이 문서를 읽어보세요.
static NSString *const kCrossPromotedAppId = @"123456789";
static NSString *const kCrossPromotedCampaign = @"test campaign";
- (void) crossPromotion {
NSDictionary *parameters = @{@"af_sub1": @"val", @"custom_param": @"val2" };
[AppsFlyerCrossPromotionHelper logAndOpenStore:kCrossPromotedAppId
campaign:kCrossPromotedCampaign
parameters:parameters
openStore:^(NSURLSession *urlSession, NSURL *clickURL)
{
NSURLSessionDataTask *dataTask;
dataTask = [urlSession dataTaskWithURL:clickURL
completionHandler:^(NSData * _Nullable data,
NSURLResponse * _Nullable response,
NSError * _Nullable error)
{
if (error) {
NSLog(@"AppsFlyer crossPromotionViewed Connection failed! Error - %@",[error localizedDescription]);
}
else
{
if (NSClassFromString(@"SKStoreProductViewController") == nil) {
NSString *iTunesLink = [linkGenerator generateLink];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink] options:@{} completionHandler:^(BOOL success) {
NSLog(@"AppsFlyer openAppStoreForAppID completionHandler result %d",success);
}];
}
}
}];
[dataTask resume];
if (NSClassFromString(@"SKStoreProductViewController") != nil) {
[self openStoreKit:kCrossPromotedAppId viewController:self];
}
}];
}
- (void) openStoreKit:(NSString*) appID
viewController: (UIViewController*) viewController
{
SKStoreProductViewController *storeController = [[ SKStoreProductViewController alloc ] init ];
NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : appID };
[ storeController loadProductWithParameters: productParameters completionBlock:^( BOOL result, NSError *error )
{
if ( result )
{
[viewController presentViewController:storeController animated:YES completion:nil];
}
}];
Dictionary<string,string> parameters = new Dictionary<string,string>();
parameters.Add("af_sub1","val");
parameters.Add("custom_param","val2");
AppsFlyer.attributeAndOpenStore("com.mygosoftware.android.loginbox","test campaign",parameters);
안드로이드에서 이 메서드를 호출하면 플레이 스토어가 열리고 연관 앱으로 리다이렉션합니다.
Dictionary<string,string> parameters = new Dictionary<string,string>();
parameters.Add("af_sub1","val");
parameters.Add("custom_param","val2")
AppsFlyer.attributeAndOpenStore("123456789","test campaign",parameters);
참고
이 어트리뷰션 링크 매개변수 중 아무 매개변수나 생성된 링크에 추가할 수 있습니다.
크로스 프로모션 노출 어트리뷰션은 다음 API 호출을 사용합니다. 크로스 프로모션 대상 앱 ID가 앱스플라이어 대시보드에 나타납니다. 그러므로 꼭 프로모션할 앱의 ID를 사용하십시오.
String appID = "com.app";
String campaign = "Cross Promo Campaign";
Map<String, String> parameters = new HashMap();
parameters.put("af_sub1", "val");
parameters.put("custom_param", "val2");
CrossPromotionHelper.logCrossPromoteImpression(this, appID, campaign, parameters);
val appID = "com.app"
val campaign = "Cross Promo Campaign"
val parameters = HashMap<String, String>()
parameters.put("af_sub1", "val")
parameters.put("custom_param", "val2")
CrossPromotionHelper.logCrossPromoteImpression(
this,
appID,
campaign,
parameters
)
static NSString *const kCrossPromotedAppId = @"123456789";
static NSString *const kCrossPromotedCampaign = @"test campaign";
/*...*/
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *kCrossPromotedParameters = @{@"af_sub1": @"val", @"custom_param": @"val2" };
/* generate impression for cross-promotion */
[AppsFlyerCrossPromotionHelper logCrossPromoteImpression:kCrossPromotedAppId
campaign:kCrossPromotedCampaign parameters:kCrossPromotedParameters];
}var appID = "com.app" var campaign = "Cross Promo Campaign" var parameters = [String : String]() parameters["af_sub1"] = "val" parameters["custom_param"] = "val2" AppsFlyerCrossPromotionHelper.logCrossPromoteImpression(appID, campaign: campaign, parameters: parameters)
AppsFlyer.recordCrossPromoteImpression(string promotedAppID, string campaign);
안드로이드, iOS, 유니티 외 Non-native 플랫폼에서 크로스 프로모션 어트리뷰션하기
현재, 크로스 프로모션 어트리뷰션 API는 네이티브 안드로이드와 iOS SDK, 유니티에서만 가능합니다. 그러나 Non-native 플랫폼에서도 크로스 프로모션을 효율적으로 어트리뷰션할 수 있습니다. 이런 Non-native 플랫폼에는 Adobe air, Cordova, Xamarin, React native, Marmalade 등이 있습니다.
이런 플랫폼으로 만든 앱을 어트리뷰션하기 위해서는 사용자가 크로스 프로모션 광고를 클릭할 때 호출되는 어트리뷰션 링크를 만들어야 합니다. 어트리뷰션 링크는 반드시 미디어 소스 이름: af_cross_promotion, 소스 앱의 사이트 ID를 포함해야 합니다.
크로스 프로모션 클릭 URL 포맷
https://app.appsflyer.com/{PROMOTED APP ID}?pid=af_cross_promotion&
af_siteid={SOURCE APP NAME}
크로스 프로모션 노출 URL 포맷
https://impression.appsflyer.com/{PROMOTED APP ID}?pid=af_cross_promotion&
af_siteid={SOURCE APP NAME}