Реализуйте дополнительный код в SDK AppsFlyer, чтобы включить атрибуцию кросс-промо.
Реализация атрибуции перекрестной рекламы в SDK
Примечание
Обычные мобильные рекламные объявления при нажатии открывают URL-адрес. У мобильных объявлений кросс-промо нет ссылки: вместо этого они вызывают метод SDK AppsFlyer logAndOpenStore.
Атрибуция кликов и показов кросс-промо выполняется с помощью двух отдельных вызовов API, как описано ниже. В каждый вызов API также можно передать карту пар «ключ-значение», которая может содержать любые данные для вашего сценария кросс-промо.
Например, с помощью карты параметров можно задать окно атрибуции по клику и другие параметры, такие как идентификаторы объявлений и группы объявлений. Вы также можете пометить кампанию как кампанию с вознаграждением. Подробнее см. в разделе «Параметры атрибуции AppsFlyer».
Список стандартных параметров, которые можно передать в метод API, см. в статье «Параметры атрибуции AppsFlyer»
При первом запуске продвигаемого приложения все исходные параметры доступны через API данных конверсии SDK для Android или iOS.
Атрибуция кликов по кросс-промо
Используйте следующий код, чтобы атрибутировать клик и открыть страницу приложения в магазине приложений. Код создает ссылку атрибуции и добавляет в нее рекламный идентификатор устройства.
Android iOS
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);
adjusted.png
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 создаётся ссылка атрибуции и возвращается в метод onOpenStoreLinkGenerated интерфейса IAppsFlyerUserInvite.
Вкладка «Разрешения»
К сгенерированной ссылке можно добавить любой из этих параметров ссылки атрибуции.
Атрибуция показов перекрестной рекламы
Для атрибуции показов используйте вызов следующего API. Обязательно используйте предлагаемый идентификатор приложения в том виде, в каком он отображается на дэшборде AppsFlyer.
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(string promotedAppID, string campaign);
Атрибуция кросс-промо на ненативных платформах
В настоящее время API атрибуции перекрестной рекламы доступны только для нативных SDK Android и iOS, а также для Unity. Однако на ненативных платформах тоже можно выполнять атрибуцию кросс-промо так же эффективно. К ним относятся такие платформы, как 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}