Чем мы можем помочь?

Атрибуция кросс-промо кампаний для разработчиков

  • Обновлено

Реализуйте дополнительный код в 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}