概要:AppsFlyer SDKに追加コードを実装してクロスプロモーション計測を有効にしましょう。
関連記事
クロスプロモーションを活用するための全体像を把握するためには、以下の記事を参照してください。
- マーケター向けクロスプロモーションの計測
- ディベロッパー向けクロスプロモーションの計測(本記事)
SDKにクロスプロモーション計測を実装
注記
通常のモバイル広告では、クリックされるとURLがアクティベートされます。クロスプロモーションのモバイル広告ではリンクが存在しませんが、代わりにAppsFlyer SDKの logAndOpenStore メソッドでアクティベートされます。
クロスプロモーションのクリックとインプレッションの計測は、次の2つの異なるAPIコールを使用して実行されます。各APIコールは、クロスプロモーションのユースケースに適用するどんなキーと値のMapに引き渡すことも可能です。
例えば、パラメーターのマップを使用して、クリックルックバック期間や広告ID、広告セットなど、その他のパラメーターを設定できます。キャンペーンをインセンティブキャンペーンとしてマークすることもできます。詳細については、AppsFlyerの計測パラメーターを参照してください。
APIメソッドに引き渡すことができる標準パラメーターの一覧については、 AppsFlyerの計測パラメーターを参照してください。
広告対象のアプリが初回起動すると、Android または iOS のいずれも、SDKのコンバージョンデータ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);
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);
Androidでは、このメソッドの呼び出すことで、Play Storeを開き、該当するアプリにリダイレクトされます。
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
メソッドに返されます。デフォルトでは、このメソッドはリンクをWebブラウザで開き、アプリストアにリダイレクトします。この動作を変更するには、AppsFlyerTrackerCallbacks
内の onOpenStoreLinkGenerated
メソッドを、他のロジックに編集してください。
注記
生成されたリンクには、これらの計測リンクパラメーターのいずれも追加することができます。
クロスプロモーションのインプレッション計測
インプレッションを計測するには、次のAPIコールを使用します。AppsFlyerの管理画面上に表示されているアプリ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(stringpromotedAppID, string campaign);
ネイティブ以外のプラットフォームでクロスプロモーションを計測
現在、クロスプロモーション計測 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}