¿Cómo podemos ayudarte?

Atribución de promoción cruzada para desarrolladores

  • Actualización

Implementa código adicional en el SDK de AppsFlyer para habilitar la atribución de promoción cruzada.

Implementar la atribución de promoción cruzada en el SDK

Nota:

Los anuncios móviles normales activan una URL cuando se hace clic en ellos. Los anuncios móviles de promoción cruzada no tienen un enlace; en su lugar, activan el método logAndOpenStore del SDK de AppsFlyer.

La atribución de clics e impresiones de promoción cruzada se realiza mediante dos llamadas independientes a la API, como se describe a continuación. En cada llamada a la API también puedes pasar un mapa de valores de clave que puede contener cualquier dato que se ajuste a tu caso de uso de promoción cruzada.

Por ejemplo, con el mapa de parámetros puedes configurar la ventana de lookback de clic y otros parámetros, como los ID de anuncios y los conjuntos de anuncios. También puedes marcar la campaña como incentivada. Consulta el parámetro de atribución de AppsFlyer para obtener más información.

Para ver una lista de parámetros estándar que puedes pasar al método de la API, consulta el parámetro de atribución de AppsFlyer.

Cuando se inicia por primera vez la aplicación promocionada, puedes acceder a todos los parámetros originales a través de la API de datos de conversión del SDK para Android o iOS.

Atribuir clics de promoción cruzada

Usa el siguiente código para atribuir el clic y abrir la página de la aplicación en la tienda de aplicaciones. El código crea un enlace de atribución y le añade el ID de publicidad del dispositivo.

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);
apps de iOS,

iOS te permite utilizar el componente StoreKit para abrir la App Store sin salir del contexto de tu aplicación. El siguiente fragmento de código muestra cómo abrir la clase StoreKit y comprobar que se ha inicializado correctamente. Puedes leer más sobre la documentación de StoreKit aquí.

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);

En Android, la llamada a este método debería abrir Play Store y redirigir a la aplicación correspondiente.

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);

En iOS, se genera un enlace de atribución y se devuelve al método onOpenStoreLinkGenerated en la interfaz IAppsFlyerUserInvite.

Nota

Puedes añadir cualquiera de estos parámetros de enlace de atribución al enlace generado.

Atribuir impresiones de promoción cruzada

Para atribuir una impresión, usa la siguiente llamada a la API. Asegúrate de usar el ID de aplicación promocionado tal y como aparece en el panel de control de 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);

Atribución de promoción cruzada con plataformas no nativas

Actualmente, las API de atribución de promoción cruzada solo están disponibles para los SDK nativos de Android e iOS y para Unity. Sin embargo, las plataformas no nativas pueden realizar la atribución de promoción cruzada con la misma eficacia. Entre ellas se incluyen plataformas como Adobe air, Cordova, Xamarin, React native, Marmalade, etc.

Para ello, debes crear un enlace de atribución, que se activa cuando el usuario hace clic en el anuncio de promoción cruzada. El enlace DEBE contener el nombre de la fuente de medios af_cross_promotion y el ID del sitio de la aplicación de origen.

Formato de URL de clics de promoción cruzada:

https://app.appsflyer.com/{PROMOTED APP ID}?pid=af_cross_promotion&
af_siteid={SOURCE APP NAME}

Formato de URL de impresiones de promoción cruzada:

https://impression.appsflyer.com/{PROMOTED APP ID}?pid=af_cross_promotion&
af_siteid={SOURCE APP NAME}