概要:AppsFlyer SDKに追加コードを実装してクロスプロモーション計測を有効にしましょう。
SDKにクロスプロモーション計測を実装
Note
通常のモバイル広告では、クリックされるとURLがアクティベートされます。クロスプロモーションのモバイル広告ではリンクが存在しませんが、代わりにAppsFlyer SDKの logAndOpenStore メソッドでアクティベートされます。
クロスプロモーションのクリックとインプレッションの計測は、次の2つの異なるAPIコールを使用して実行されます。各APIコールは、クロスプロモーションのユースケースに適用するどんなキーと値のMapに引き渡すことも可能です。
例えば、パラメーターのマップを使用して、クリックルックバック期間や広告ID、広告セットなど、その他のパラメーターを設定できます。キャンペーンをインセンティブキャンペーンとしてマークすることもできます。詳細については、AppsFlyerの計測パラメーターを参照してください。
APIメソッドに引き渡すことができる標準パラメーターの一覧については、 AppsFlyerの計測パラメーターを参照してください。
広告対象のアプリが初回起動すると、Android または iOS のいずれも、SDKのコンバージョンデータAPIを介して全ての計測リンク上のパラメーターにアクセスできます。
Attribute cross-promotion clicks
次のコードを使用して、クリックとアプリのアプリストアページの起動を計測します。このコードは、計測リンクを作成し、デバイスの広告IDを追加します。
Android
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
iOSでは、StoreKit コンポーネントを使用して、アプリのコンテキストを維持しながら、App Storeを開くことができます。次のコードスニペットは、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];
}
}];
Unity - Android
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);
Androidでは、このメソッドの呼び出すことで、Play Storeを開き、該当するアプリにリダイレクトされます。
Unity - iOS
Dictionary<string,string> parameters = new Dictionary<string,string>();
parameters.Add("af_sub1","val");
parameters.Add("custom_param","val2")
AppsFlyer.attributeAndOpenStore("123456789","test campaign",parameters);
iOSでは、計測リンクが生成され、AppsFlyerTrackerCallbacks オブジェクト内の onOpenStoreLinkGenerated メソッドに返されます。
Note
生成されたリンクには、これらの計測リンクパラメーターのいずれも追加することができます。
Attribute cross-promotion impressions
インプレッションを計測するには、次のAPIコールを使用します。 AppsFlyerの管理画面上に表示されているアプリIDを使用していることをご確認ください。
Java
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);
Kotlin
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
)
Objective C
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];
}
Swift
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)
Unity
AppsFlyer.recordCrossPromoteImpression(stringpromotedAppID, string campaign);
Attribute cross-promotion with non-native platforms
現在、クロスプロモーション計測 APIは、ネイティブのAndroid および iOS SDKと、Unityのみでご利用いただけます。ただし、非ネイティブプラットフォームも、同様に効果的にクロスプロモーションを計測できます。これらのプラットフォームには、Adobe air、Cordova、Xamarin、React native、Marmaladeなどが含まれます。
そのためには、ユーザーがクロスプロモーション広告をクリックした際に呼び出される計測リンクを構築する必要があります。このリンクには、メディアソース名である af_cross_promotion と、広告が掲載されるアプリのサイトIDを含める必要があります。
クリック用のクロスプロモーションURL形式:
http://app.appsflyer.com/{PROMOTED APP ID}?pid=af_cross_promotion&
af_siteid={SOURCE APP NAME}
インプレッション用のクロスプロモーションURL形式:
http://impression.appsflyer.com/{PROMOTED APP ID}?pid=af_cross_promotion&
af_siteid={SOURCE APP NAME}