Integración de SDK de AppsFlyer - iOS

ios.png

Versión del SDK: 4.8.4 (Notas de la versión)

1. Resumen

Esta guía detalla cómo integrar el SDK de AppsFlyer en tu aplicación de iOS. Puedes realizar un rastreo de las instalaciones, las actualizaciones, las sesiones y de los eventos in-app adicionales, así como las instalaciones de la aplicación (incluidas las compras in-app, los niveles del juego, etc.) para evaluar el ROI y los niveles de engagement del usuario. El SDK de iOS es compatible con todos los dispositivos iOS (iPhone, iPod, iPad) con iOS versión 6 y superior.

 Nota

El SDK de AppsFlyer cumple totalmente con las redes IPv6 DNS64 / NAT64 de Apple. Para obtener más información, haz clic aquí.

 ¡Importante!

El SDK de AppsFlyer hace uso de la clase NSUserDefaults. Borrar todos los valores de NSUserDefaults puede causar problemas de atribución.

2. Inicio rápido

2.1 Descarga y agrega el SDK de AppsFlyer a Xcode

CocoaPods Carthage Static Framework Static Lib
  • Asegúrate de haber descargado e instalado la última versión de CocoaPods.
  • Agrega la siguiente fila a tu Podfile:
    pod 'AppsFlyerFramework'
  • ejecuta la instalación pod
  • Asegúrate de usar el archivo .xcworkspace para abrir tu proyecto en Xcode, en lugar del archivo .xcodeproj, de aquí en adelante.

El SDK de AppsFlyer usa los siguientes marcos nativos:

AdSupport.framework
Para recolectar el IDFA de los dispositivos, necesitarás este marco.
Sin el IDFA no podrás rastrear anuncios de Facebook, Twitter, Google y otras redes.
iAd.framework
Este marco es necesario para rastrear Anuncios de Búsqueda de Apple en tu aplicación

2.2 Configurar la Integración en el Delegado de la Aplicación

Abre el archivo AppDelegate.m de tu aplicación e importa el SDK de AppsFlyer:

Swift Objective-C
importa AppsFlyerLib

3. Inicialización del SDK

Inicializa el SDK en el método didFinishLaunchingWithOptions con tu ID de aplicación tomada de iTunes Connect y tu clave de desarrollador de AppsFlyer

Ten en cuenta que aquí debes configurar el ID de aplicación únicamente con dígitos, sin el prefijo "id".

Swift Objective-C
AppsFlyerTracker.shared().appsFlyerDevKey = "<your-appsflyer-dev-key>";
AppsFlyerTracker.shared().appleAppID = "123456789"
AppsFlyerTracker.shared().delegate = self
#ifdef DEBUG
AppsFlyerTracker.shared().isDebug = true
#endif

 Nota

Si se establece isDebug = true, los registros del SDK de AppsFlyer se muestran en la Consola xCode.

 

  • Agrega el siguiente código en la función applicationDidBecomeActive:
Swift Objective-C
func applicationDidBecomeActive (application: UIApplication){ 
	// Track Installs, updates & sessions(app opens) (You must include this API to enable tracking) 
	AppsFlyerTracker.shared().trackAppLaunch() 
	// your other code here.... 
	}

4. Rastreando Eventos In-App

Los eventos in-app brindan insights sobre lo que está sucediendo en tu aplicación. Se recomienda tomarse el tiempo y definir los eventos que deseas medir para que puedas rastrear el ROI (Retorno de la Inversión) y el LTV (Valor del Tiempo de Vida).

El rastreo de los eventos de la aplicación se realiza llamando a trackEvent con el nombre del evento y los parámetros de valor. Consulta Eventos in-app para más detalles.

El nombre para el evento in-app no debe tener más de 45 caracteres. Los nombres de eventos con más de 45 caracteres no aparecerán en el panel de control, sino solo en las API de pull y push y de raw data.

Ejemplo: Level Achieved In-App Event

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventLevelAchieved, withValues: [
	AFEventParamLevel: 9,
	AFEventParamScore : 100
]);

Esto genera un tipo de evento af_level_achieved (utilizando la constante AFEventLevelAchieved)con los siguientes valores de evento:{af_level: 9 , af_score: 100} 

 Nota

AppsFlyer admite caracteres no ingleses con eventos in-app o con cualquier otra API de SDK a partir de la versión 4.8.1 del SDK de iOS.

No agregues símbolos de divisas ni decimales a las cifras, ya que estos no se reconocen.

 Ejemplo de Uso

Swift Objective C
AppsFlyerTracker.shared().trackEvent(AFEventPurchase, withValues: [
    AFEventParamRevenue: @"1200",
    AFEventParamCurrency : @"JPY"
]);

5. Rastrear las Conexiones Profundas

 Consejo

Te recomendamos encarecidamente integrar las conexiones profundas en tu aplicación.  Las Conexiones Profundas son una parte crucial de las campañas de retargeting, y es muy recomendable usarlas cuando se realizan dichas campañas.

iOS9 y versiones posteriores requieren que tu aplicación sea compatible con enlaces universales. Para obtener más detalles, haz clic aquí.


Para informar de tales lanzamientos, agrega el siguiente código al delegado de la aplicación:

Swift Objective-C
// Reports app open from a Universal Link for iOS 9 or later
    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
        AppsFlyerTracker.shared().continue(userActivity, restorationHandler: restorationHandler)
        return true
    }

    // Reports app open from deep link from apps which do not support Universal Links (Twitter) and for iOS8 and below
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, sourceApplication: sourceApplication, withAnnotation: annotation)
        return true
    }

    // Reports app open from deep link for iOS 10 or later
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, options: options)
        return true
    }

6. Rastreando los Ingresos

Utiliza el parámetro de evento af_revenue (AFInAppEventParameterName.REVENUE) para contar los ingresos como parte de un evento in-app. Puedes llenarlo con cualquier valor numérico, positivo o negativo.

 Nota

AFEventParamRevenue (equivalente al uso de af_revenue) es el ÚNICO parámetro de evento que se cuenta en AppsFlyer como ingreso actual en los raw data y en el panel de control. Para obtener más detalles, haz clic aquí.


Ejemplo: evento in-app de ingresos

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventPurchase, withValues: [
        AFEventParamContentId:"1234567",
        AFEventParamContentType : "category_a",
        AFEventParamRevenue: 1.99,
        AFEventParamCurrency:"USD"
    ]);

7. Obtener Datos de Conversión

AppsFlyer te permite acceder a los datos de atribución del usuario en tiempo actual por cada nueva instalación, directamente desde el nivel del SDK. Al hacer esto, puedes ofrecer a los usuarios contenido personalizado o enviarlos a actividades específicas dentro de la aplicación, lo que puede mejorar enormemente su engagement con tu aplicación.  

Para obtener más información sobre esta funcionalidad avanzada, haz clic aquí.

8. Identificadores de Usuario

Hay una serie de opciones para recuperar identificadores de usuarios:

Obtener el ID de Dispositivo de AppsFlyer

El ID de dispositivo único de AppsFlyer se crea por cada nueva instalación de una aplicación. Puedes obtenerlo usando el siguiente código:

Swift Objective-C
let appsflyerId = AppsFlyerTracker.shared().getAppsFlyerUID()

Establecer ID de Usuario de Cliente

Establecer tu propio ID de cliente te permite hacer una referencia cruzada de tu propio ID único con el ID único de AppsFlyer y los ID de los otros dispositivos. Este ID está disponible en los reportes de CSV de AppsFlyer junto con las API de Postback para referencias cruzadas con tus ID internos.

Para configurar tu ID de usuario de cliente:

Swift Objective-C
AppsFlyerTracker.shared().customerUserID = "my user id"

  Nota Importante

El customerUserID se DEBERÍA establecer antes del trackAppLaunch. Se recomienda establecer tu ID de usuario del cliente lo antes posible, ya que solo está asociado a los eventos informados después de su instalación. El ID de usuario de cliente también se puede usar para completar integraciones con plataformas de analíticas como Mixpanel y Swrve.Para obtener más información sobre el ID de usuario de cliente, haz clic aquí.

Configurar el Correo Electrónico de Usuario

AppsFlyer te permite reportar una o más de las direcciones de correo electrónico del usuario, si las recopilas en tu aplicación. Los valores de la dirección de correo electrónico se pueden encriptar siguiendo los siguientes métodos de encriptación: Sha1, MD5 y plain.

Ejemplo: Recopilar la dirección de correo electrónico del usuario

Swift Objective-C
AppsFlyerTracker.shared().setUserEmails([
	"email1@domain.com", 
	"email2@domain.com"], 
	con: EmailCryptTypeSHA1)

 Nota

La Información de Identificación Personal (PII) tal como las direcciones de correo electrónica no es retenida por AppsFlyer, ni tampoco se presenta esta información en ningún reporte. El propósito de recopilar esta información es únicamente para propósitos de postbacks para la fuente de medios.

IDFA y IDFV

AppsFlyer recopila automáticamente el IDFA (ID para los Anunciantes) y el IDFV (ID para los Vendedores) si se incluye AdSupport.framework en la aplicación.

9. Funciones Opcionales

Rastrear las Desinstalaciones

Para desinstalar el rastreo, habilita la notificación remota push en tu aplicación. Consulta la Guía de Programación de Notificaciones Remotas de Apple para obtener más detalles.

Sigue las instrucciones de integración de SDK de iOS para completar la instalación de la función de desinstalación.

Rastreo de Notificaciones Push

Para habilitar el Rastreo de Inicios de Aplicación desde las notificaciones push, agrega el siguiente código al delegado de tu aplicación:

Swift Objective-C
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
 AppsFlyerTracker.shared().handlePushNotification(userInfo)
 }

El mensaje push debe tener un parámetro af con los parámetros de rastreo de AppsFlyer.

Ejemplo de Mensaje:

{
 "aps": {
	 "alert": "Push text",
	 "sound": "default",
	 "category": "REMINDER_CATEGORY"
 },
 "_p": 123456,
 "payloadKey": "payloadValue"
 "af": {
 "pid": "swrve_int",
 "is_retargeting": true,
 "c": "test_campaign"
 }
}

Rastreo cruzado de la promoción

AppsFlyer te permite rastrear y atribuir instalaciones originadas en una promoción cruzada de una de tus aplicaciones desde la aplicación actual que tiene el usuario. Las aplicaciones de promoción cruzada pueden ser un importante factor de crecimiento para generar instalaciones adicionales para tus aplicaciones.

Para obtener detalles, consulta el artículo de Rastreo de Promoción Cruzada, aquí.

Rastreo de Invitación de Usuario

AppsFlyer te permite rastrear y atribuir instalaciones originadas en las invitaciones de los usuarios dentro de tu aplicación. Permitir que tus usuarios actuales inviten a sus amigos y contactos como nuevos usuarios a tu aplicación puede ser un factor de crecimiento clave para tu aplicación. 
 
Para obtener detalles, consulta   el artículo de Rastreo de Invitación de Usuarios,  aquí.

Establecer el código de moneda

Puedes usar la siguiente API para establecer un código de moneda global, además de códigos de moneda específicos que se pueden usar como parte de cada evento in-app enviado a AppsFlyer. El código de moneda global se usa cuando AFEventParamCurrency no se envía como parte de un evento in-app.

USD es el valor predeterminado. Puedes encontrar códigos de moneda ISO aceptables aquí .

Usa la siguiente API para configurar el código de moneda:

public void currencyCode(String currencyCode);

Ejemplo de Uso:

Swift Objective-C
AppsFlyerTracker.shared().currencyCode = "USD"

Validación de compras in-app

 Nota

Esta función es compatible con iOS7 y superior.

El SDK de AppsFlyer puede proporcionar verificación del servidor de compras in-app. Para establecer el rastreo de validación de recibos, debes llamar al método validateAndTrackInAppPurchase dentro de completeTransaction: callback de SKStoreKit. Esta llamada genera automáticamente un evento in-app de tipo af_purchase.


- (void) validateAndTrackInAppPurchase:(NSString *) productIdentifier
price:(NSString *) price
currency:(NSString *) currency
transactionId:(NSString *) tranactionId
additionalParameters:(NSDictionary *) params
success:(void (^)(NSDictionary *response)) successBlock
failure:(void (^)(NSError *error, id reponse)) failedBlock;

 Nota

El parámetro de precio debería contener los ingresos totales asociados al evento de compra validado.


Esta llamada tiene dos bloques de callback: uno para "éxito" y otro para "falla" (por cualquier motivo, incluyendo falla de validación). Tras un éxito, se devuelve un diccionario con los datos de validación de compra (receipt validation).  

 Importante

Para fines de prueba, recomendamos establecer el indicador  useReceiptValidationSandbox en YES, ya que esto redirige las solicitudes a los servidores sandbox de Apple.

#ifdef DEBUG
[AppsFlyerTracker sharedTracker].useReceiptValidationSandbox = YES;
#endif

 

 Ejemplo

Objective-C Swift
[[AppsFlyerTracker sharedTracker] validateAndTrackInAppPurchase:product.productIdentifier price:product.price.stringValue
currency:@"USD"
transactionId:trans.transactionIdentifier dditionalParameters:@{@"test": @"val" , @"test1" : @"val 1"} success:^(NSDictionary *result){ NSLog(@"Purchase succeeded And verified!!! response: %@", result[@"receipt"]); } failure:^(NSError *error, id response) { NSLog(@"response = %@", response); }];

Para obtener una lista de posibles valores de retorno para validar recibos, consulta la documentación de Apple  aquí.

Anonimizar

AppsFlyer te ofrece un método para anonimizar identificadores de usuarios específicos en las analíticas de AppsFlyer. Este método cumple con los últimos requisitos de privacidad y con las políticas de datos y privacidad de Facebook. El valor predeterminado es NO, lo que significa que no se efectuará la anonimización de forma predeterminada.

Usa esta API durante la Inicialización del SDK para anonimizar explícitamente las instalaciones, los eventos y las sesiones de un usuario:

Swift Objective-C
AppsFlyerTracker.shared().deviceTrackingDisabled = true

El rastreo se puede reiniciar llamando a deviceTrackingDisabled nuevamente configurado como falso.

 Advertencia

Anonimizar a los usuarios afecta SEVERAMENTE tu información de atribución.
Usa esta opción SOLO para regiones donde la ley te impida recopilar información de tus usuarios.

Tiempo Personalizado Entre Sesiones

Para que AppsFlyer cuente dos sesiones separadas, el tiempo predeterminado entre cada sesión debe ser de al menos 5 segundos.  Una sesión comienza cuando el usuario abre la aplicación.  Si deseas configurar un tiempo diferente entre sesiones, usa la siguiente API:

Swift Objective-C
AppsFlyerTracker.shared().minTimeBetweenSessions = <your_custom_time_in_seconds>

Sesiones de Segundo Plano para Aplicaciones de Utilidad

No disponible en iOS. 
 

Extensiones de aplicaciones de iOS y WatchKit

La extensión de la aplicación requiere permisos para usar Internet:

  1. Ve al archivo info.plist de tu extensión de la aplicación
  2. En NSExtension /NSExtensionAttributes, establece el indicadorRequestsOpenAccessen YES.

Agrega el siguiente código a UIViewControlle viewDidLoad de la extensión de la aplicación:

Swift Objective-C
override func viewDidLoad() {    
        super.viewDidLoad()
        AppsFlyerTracker.shared().appsFlyerDevKey = "MY_APPSFLYER_KEY"

        // MY_APP_ID below stands for you app ID on iTunes Connect. Should be 9 or 10 digits.
        AppsFlyerTracker.shared().appleAppID = "MY_APP_ID"
                
        AppsFlyerTracker.sharedTracker().trackAppLaunch()
    }

Para recibirdatos de atribución en la extensión de la aplicación, sigue las instrucciones aquíe impleméntalas en el UIViewController de tu aplicación en lugar de implementarlas en AppDelegate.

Optar por la Exclusión

En algunos casos extremos, tal vez necesites desactivar todo el rastreo del SDK para cumplir con la ley y las políticas de privacidad. Para hacerlo, puedes utilizar la API isStopTracking. Una vez invocada esta API, nuestro SDK ya no se comunicará con nuestros servidores y dejará de funcionar.

Swift Objective-C
AppsFlyerTracker.shared().isStopTracking = true

Recopilar Nombre del Dispositivo

El SDK de AppsFlyer te permite recopilar el Nombre del Dispositivo para tus análisis internos. Esta función está desactivada de forma predeterminada. Para activarla, usa la siguiente API:

Swift Objective-C
AppsFlyerTracker.shared().shouldCollectDeviceName = false`

 Importante

El Nombre del Dispositivo podría considerarse información personal en ciertas regiones. Solo recopila esta información si sabes que tienes permiso legal y has recibido el consentimiento explícito del usuario para hacerlo.

Configuración de Datos Adicionales

La API setAdditionalData es necesaria para la integración a nivel del SDK con varias plataformas de partners externos, incluidas Segment, Adobe y Urban Airship. Usa esta API solo si el artículo de integración de la plataforma indica específicamente que es necesaria la API setAdditionalData.
A continuación, se muestra un ejemplo de código para implementar setAdditionalData en iOS para Objective-C o Swift:

Ojective-C Swift
NSDictionary* CustomDataMap = [
[NSDictionary alloc] initWithObjectsAndKeys:@"value_of_param_1", @"custom_param_1", nil
];
    
[[AppsFlyerTracker sharedTracker] setAdditionalData:CustomDataMap];

10. Probando Tu Integración

Para detalles sobre cómo probar tu integración, haz clic aquí.

11. Enviando la aplicación a la App Store

Puedes encontrar las instrucciones para enviar tu aplicación a la App Store aquí .

show
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 8 de 12

Comentarios

0 comentarios

Inicie sesión para dejar un comentario.