Introducción
Los enlaces profundos consisten en iniciar una aplicación móvil y, al mismo tiempo, ofrecer contenido personalizado o enviar a los usuarios a actividades específicas dentro de la aplicación. De esta manera, puedes brindarles a los usuarios una experiencia superior, que puede mejorar ampliamente su engagement con tus aplicaciones.
Los 2 tipos de enlaces profundos
Dado que los usuarios pueden tener la aplicación móvil instalada o no, existen 2 tipos de enlaces profundos:
- Conexiones profundas
- Ofrecen contenido personalizado directamente a los usuarios existentes, que ya tienen la aplicación móvil instalada.
- Enlaces profundos diferidos
- Ofrecen contenido personalizado a usuarios nuevos o anteriores, inmediatamente después de la instalación.
AppsFlyer es compatible con los métodos de enlaces profundos directos y diferidos mediante su exclusivo enlace de atribución detector de dispositivos: OneLink™.
En esta guía, encontrarás todo lo que necesitas saber sobre la configuración y el uso de los enlaces profundos en tus aplicaciones móviles. Recomendamos que un marketer y un desarrollador revisen esta guía juntos, porque aquí se incluye la configuración de enlaces profundos tanto en el panel de control de AppsFlyer como en la aplicación.
¡Importante!
El funcionamiento de los enlaces profundos depende de la configuración correcta de OneLink.
Por favor, lee primero nuestra Guía de configuración básica de OneLink™.
Enlaces profundos y OneLink
OneLink funciona como un "puente" entre los anuncios y la aplicación móvil. Puede iniciar la aplicación y proporcionarles a los desarrolladores móviles los datos necesarios para personalizar la experiencia del usuario. Para esto, la aplicación móvil DEBE desarrollarse con las capacidades y la infraestructura necesarias para el funcionamiento de los enlaces profundos.
Enlaces profundos y retargeting
Los enlaces profundos y OneLink se encuentran entre las principales herramientas de los anunciantes para lograr el re-engagement de usuarios anteriores o actuales, es decir, para efectuar el retargeting. Este tema se trata en la Guía de retargeting, que debe implementarse después de la Guía de enlaces profundos.
Métodos de enlaces profundos
Existen varios métodos de enlaces profundos que deben implementarse para cubrir por completo tu base de usuarios. El método utilizado depende de la plataforma móvil (iOS/Android) y de la versión del sistema operativo de cada usuario.
Método | Descripción | Necesario para |
---|---|---|
Esquema URI | Abrir la aplicación directamente y redirigir a la ruta de actividad especificada en el parámetro de URL af_dp . |
|
enlaces universales | Abre la aplicación móvil directamente en la actividad predeterminada. Esto requiere que los desarrolladores móviles creen una lógica que redirige o proporciona contenido personalizado en función de los parámetros de URL de OneLink, p. ej., af_dp o af_sub1
|
iOS 9 y superior |
Enlaces de aplicaciones | Android 6 y superior |
Haz clic en cualquier cuadro de métodos de enlaces profundos a continuación para ver los detalles de implementación. Recomendamos que un marketer y un desarrollador revisen y trabajen juntos en la implementación. Cada método describe qué debe hacer el desarrollador y qué debe hacer el marketer.
Esquema URI
Los esquemas URI son URL que llevan a los usuarios directamente a actividades de las aplicaciones móviles. En Android, los esquemas URI también pueden usarse para establecer enlaces profundos entre los usuarios y actividades específicas.
Si los usuarios de una aplicación ingresan un esquema URI en el cuadro de la barra de direcciones de un navegador, la aplicación se inicia y los usuarios se conectan mediante enlaces profundos. Lo mismo sucede cuando los usuarios hacen clic en enlaces que incluyen esquemas URI.
AppsFlyer es compatible con la funcionalidad de enlaces profundos con esquema URI a través de las URL OneLink, mediante el parámetro af_dp
.
Configurar los esquemas URI
La configuración de OneLink para el esquema URI debe hacerse en colaboración entre el marketer y el desarrollador.
La configuración del esquema URI se produce en dos lugares:
- En la página de plantilla de OneLink
- En la aplicación
El esquema URI en las instrucciones a continuación es greatapp://
.
Para los marketers
Configurar una plantilla de OneLink
- En el panel de control de tu aplicación, haz clic en Configuración de OneLink.
- Selecciona una plantilla de OneLink existente o crea una nueva.
- Selecciona las aplicaciones pertinentes según las secciones debajo de iOS y Android.
- Desplázate hacia abajo, hasta Configuración adicional
- Si además usas el enlace de la aplicación de Android o los enlaces universales de iOS, junto con el esquema URI, configura un subdominio OneLink en Enlaces profundos (iOS9/Android 6 o versiones superiores).
- Configura el esquema URI en el Esquema URL personalizado de enlaces profundos.
- Desplázate hacia abajo y haz clic en Guardar configuración.
Para los desarrolladores
Esquema URI para Android
En el manifiesto de tu aplicación, agrega el siguiente filtro de intención a tu actividad pertinente:
<activity android:name="com.appsflyer.sample.Activity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="greatapp" />
</intent-filter>
</activity>
Android: enlaces profundos a actividades específicas
Agrega un esquema URI en cada actividad con la cual deseas establecer un enlace profundo:
greatapp://activity1
<activity android:name="com.appsflyer.sample.Activity1">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="greatapp" />
<data android:host="activity1" />
</intent-filter>
</activity>
greatapp://activity2
<activity android:name="com.appsflyer.sample.Activity2">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="greatapp" />
<data android:host="activity2" />
</intent-filter>
</activity>
Esquema URI para iOS 8 y versiones anteriores
- En Xcode, abre el archivo de información plist de la aplicación.
- Agrega una entrada de tipos de URL.
- Expande las filas Tipo de URL y Elemento 0.
- Agrega un identificador exclusivo de la aplicación para el identificador de URL como valor. Lo mejor es seleccionar un identificador exclusivo que otras aplicaciones probablemente no utilicen.
- Haz clic con el botón derecho en el identificador de URL y selecciona Agregar fila. A continuación, selecciona Esquemas URI y establece el valor de Elemento 0 para tu esquema exclusivo.
Probar los esquemas URI
Para probar el esquema URI, crea un enlace de atribución personalizado.
- Genera un enlace de atribución personalizado desde el OneLink creado.
- Instala la aplicación en tu dispositivo.
- Envía el enlace de atribución al dispositivo.
- Haz clic en el enlace.
Si el enlace no abre la aplicación, agrega el parámetro af_force_deeplink=true
para personalizar el enlace de atribución. Por ejemplo:
https://demo.onelink.me/1aBC/123ab45c?af_force_deeplink=true
Limitaciones
Ni Apple ni Google exigen nombres exclusivos para los esquemas de aplicaciones. Elige un nombre de esquema exclusivo para tu marca a fin de evitar conflictos de esquemas entre las distintas aplicaciones. Un buen nombre de esquema podría ser el ID del paquete de la aplicación, es decir com.company.app.
Cuando un enlace OneLink que tiene af_force_deeplink=true
se abre en iOS 12.3.1, se aplica la siguiente lógica:
- Se muestra una ventana de diálogo donde se le pregunta al usuario si la aplicación está instalada:
- Si el usuario elige Aceptar (la aplicación está instalada), AppsFlyer intenta abrir la aplicación mediante el esquema URI.
- Si el usuario elige Cancelar (la aplicación no está instalada), AppsFlyer lo redirige a la tienda de aplicaciones.
- Si el usuario elige Aceptar, pero la aplicación no está instalada, aparece un mensaje de error:
Para que OneLink pueda funcionar con iOS y Android, es importante que se defina el mismo esquema para ambas plataformas. A continuación, presentamos las instrucciones para iOS y Android.
Actualmente, no se admiten enlaces profundos mediante esquemas URI en dispositivos Amazon.
enlaces universales
El método de enlaces universales establece enlaces entre una aplicación móvil de iOS y un sitio web/dominio asociados. En esta guía, te mostramos cómo crear y usar los enlaces universales con OneLink.
La configuración de enlaces universales con OneLink es un proceso de dos partes:
- Configuración de OneLink
- Configuración de aplicaciones móviles para registrar dominios aprobados
Configuración de OneLink
La configuración de OneLink para enlaces universales debe hacerse en colaboración entre el marketer y el desarrollador.
Para los desarrolladores
Paso 1: obtener el ID del paquete de la aplicación y el ID del prefijo
- Inicia sesión en tu cuenta de desarrollador de Apple.
- En el menú izquierdo, selecciona Certificados, identificadores y perfiles.
- En Identificadores, selecciona ID de aplicación.
- Haz clic en la aplicación correspondiente.
- Copia el prefijo y el ID:
- Indícale el prefijo y el ID al marketer.
Paso 2: activar los dominios asociados
Este paso se realiza en la misma pantalla que el paso 1.
- Desplázate hacia abajo en la lista de Servicios de aplicaciones.
- Haz clic en Editar.
- Habilita la opción Dominios asociados.
- Desplázate hacia abajo y haz clic en Listo.
Paso 3: configurar aplicaciones móviles para registrar los dominios aprobados
Esta parte tiene lugar dentro de Xcode. Requiere el subdominio de OneLink que tu marketer genera en el paso de configuración de plantilla de OneLink a continuación. Asegúrate de que tu marketer genere un subdominio de OneLink antes de comenzar.
- En Xcode, haz clic en tu proyecto.
- Haz clic en el objetivo del proyecto: consulta la captura de pantalla a continuación.
- Pase a la pestaña Capacidades
- Activa la opción Dominio asociado.
- Agrega el subdominio que creaste en la primera parte de esta guía.
El formato es applinks:sudbomain.onelink.me
Paso 4: manejar enlaces profundos en la aplicación
Para administrar enlaces profundos, agrega el siguiente código a tu aplicación (en la clase de delegado de aplicación). Los métodos de este código te permiten obtener datos de enlaces profundos. Con los datos de enlaces profundos, puedes redireccionar usuarios a la actividad de la aplicación pertinente y ofrecerles contenido relevante.
func onConversionDataReceived(_ installData: [AnyHashable: Any]) {
//Handle Conversion Data (Deferred Deep Link)
}
func onConversionDataRequestFailure(_ error: Error?) {
// print("\(error)")
}
func onAppOpenAttribution(_ attributionData: [AnyHashable: Any]) {
//Handle Deep Link Data
}
func onAppOpenAttributionFailure(_ error: Error?) {
}
// 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
}
Para Swift 4.2 o versión superior, utiliza el siguiente código para el método continue userActivity
:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
AppsFlyerTracker.shared().continue(userActivity, restorationHandler: nil)
return true
}
-(void)onConversionDataReceived:(NSDictionary*) installData {
//Handle Conversion Data (Deferred Deep Link)
}
-(void)onConversionDataRequestFailure:(NSError *) error {
NSLog(@"%@",error);
}
- (void) onAppOpenAttribution:(NSDictionary*) attributionData {
//Handle Deep Link
}
- (void) onAppOpenAttributionFailure:(NSError *)error {
NSLog(@"%@",error);
}
// Reports app open from a Universal Link for iOS 9 or above
- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler {
[[AppsFlyerTracker sharedTracker] continueUserActivity:userActivity restorationHandler:restorationHandler];
return YES;
}
// Reports app open from deep link from apps which do not support Universal Links (Twitter) and for iOS8 and below
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {
[[AppsFlyerTracker sharedTracker] handleOpenURL:url sourceApplication:sourceApplication withAnnotation:annotation];
return YES;
}
// Reports app open from deep link for iOS 10
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
options:(NSDictionary *) options {
[[AppsFlyerTracker sharedTracker] handleOpenUrl:url options:options];
return YES;
}
Para los marketers
Configurar la plantilla de OneLink
Antes de comenzar, pídele a tu desarrollador que te dé lo siguiente:
- El prefijo del ID de aplicación
- ID del paquete de la aplicación de iOS
El desarrollador recupera estos elementos en el paso 1 arriba.
- En el panel de control de tu aplicación, haz clic en Configuración de OneLink
- Selecciona una plantilla de OneLink existente o crea una nueva.
- En la sección iOS , selecciona la aplicación correspondiente.
- Habilita la opción Enlaces universales para enlaces profundos.
- Pega el Prefijo del ID de aplicación y el ID del paquete de la aplicación de iOS en los campos correspondientes.
- Desplázate hacia abajo hasta Configuración adicional y define el subdominio de OneLink.
- Haz clic en Guardar configuración.
- Copia el OneLink y dáselo a tu desarrollador.
Una vez finalizados los pasos anteriores, cada vez que los usuarios hacen clic en una URL de dominio autorizado (cuando la aplicación ya está instalada en el dispositivo), iOS inicia la aplicación asociada como su actividad predeterminada.
Cómo mantener el esquema URI
Aún con iOS9+, es importante implementar un esquema URI. Algunos navegadores o aplicaciones no son compatibles con enlaces universales y recurren al método de esquema URI como opción de reserva. Consulta nuestra guía sobre cómo configurar el esquema URI para enlaces profundos.
Limitaciones de los enlaces universales
Los enlaces universales tienen algunas limitaciones que debes tener en cuenta.
Cómo abrir las aplicaciones desde navegadores
Los enlaces universales solo funcionan cuando se hace clic en ellos. Por ejemplo, cuando se hace clic en un enlace en una página web o correo electrónico. Pegar el enlace en la barra de direcciones del navegador no hace enlaces profundos en la aplicación.
Cómo establecer enlaces con actividades específicas
A diferencia de los enlaces de aplicaciones de Android, los enlaces universales solo pueden abrir la actividad predeterminada. Para establecer enlaces con actividades específicas, usa el método de la API onAppOpenAttribution.
Subdominio de OneLink
Si bien el subdominio de OneLink se puede cambiar en cualquier momento, esto hace que todas las URL de OneLink existentes que emplean el subdominio original dejen de funcionar.
OneLink en aplicaciones de redes sociales
No todas las aplicaciones, incluidas las aplicaciones de redes sociales, son totalmente compatibles con los enlaces universales. Para conocer más detalles, consulta esta guía.
Otras limitaciones y problemas
Es posible que haya otras limitaciones con los enlaces universales. Visita la sección de resolución de problemas de OneLink para conocer más detalles.
Enlaces de aplicaciones de Android
Este método, que se introdujo con Android 6.0, es la versión de Google de los enlaces universales y tiene beneficios similares. Para obtener más información, consulta nuestro artículo sobre enlaces de aplicaciones.
Configuración de los enlaces de aplicaciones de Android
La configuración de OneLink para los enlaces de aplicaciones de Android debe hacerse en colaboración entre el marketer y el desarrollador.
Para los desarrolladores
Paso 1: generar el fingerprint de SHA256 de tu aplicación
- Ubica el keystore de la aplicación: si la aplicación aún está en desarrollo, ubica el debug.keystore.
-
Para usuarios de Windows: C:\Users\USERNAME\.android\debug.keystore
-
Para usuarios de Linux o Mac OS: ~/.android/debug.keystore
-
- Abre tu terminal o línea de comandos y dirígete a la carpeta donde se encuentra el archivo keystore.
- Ejecuta el comando:
Por lo general, la contraseña del debug.keystore es "android".keytool -list -v -keystore apk-key.keystore
El resultado debe verse de la siguiente manera:
Alias name: test Creation date: Sep 27, 2017 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=myname Issuer: CN=myname Serial number: 365ead6d Valid from: Wed Sep 27 17:53:32 IDT 2017 until: Sun Sep 21 17:53:32 IDT 2042 Certificate fingerprints: MD5: DB:71:C3:FC:1A:42:ED:06:AC:45:2B:6D:23:F9:F1:24 SHA1: AE:4F:5F:24:AC:F9:49:07:8D:56:54:F0:33:56:48:F7:FE:3C:E1:60 SHA256: A9:EA:2F:A7:F1:12:AC:02:31:C3:7A:90:7C:CA:4B:CF:C3:21:6E:A7:F0:0D:60:64:4F:4B:5B:2A:D3:E1:86:C9 Signature algorithm name: SHA256withRSA Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 34 58 91 8C 02 7F 1A 0F 0D 3B 9F 65 66 D8 E8 65 0010: 74 42 2D 44 ] ]
- Indícale el fingerprint de SHA256 a tu marketer para que lo use en el paso 2 de su parte de la configuración.
Paso 2: agregar el fragmento de código a la actividad
- Después de que el marketer agregue un subdominio en la configuración de OneLink del paso 3 de su parte de la configuración, se crea un fragmento de filtro de intención.
-
Pídele al marketer el fragmento del filtro de intención.
- Abre el archivo AndroidManifest.xml de tu aplicación.
- Agrega el <intent-filter> a la actividad con la cual deseas establecer el enlace profundo.
<activity android:name="com.king.candycrushsaga.DeepLink"> <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="demo.onelink.me" android:pathPrefix="/ST6c" /> </intent-filter> </activity>
Paso 3: agregar la API de enlaces profundos a las actividades
Para cada actividad que pueda usarse para efectuar enlaces profundos (incluida la actividad principal en caso de ser necesario), agrega la siguiente línea en el método onCreate()
:
AppsFlyerLib.getInstance().sendDeepLinkData(this);
Para los marketers
Paso 1: activar los enlaces de aplicaciones en OneLink
- En el panel de control de tu aplicación, haz clic en Configuración de OneLink.
- Selecciona un OneLink existente o crea uno nuevo.
- En la sección Android, selecciona la aplicación correspondiente.
- Habilita la opción Enlaces de aplicaciones para enlaces profundos.
Paso 2: agrega el SHA256 al OneLink
- Pídele a tu desarrollador que te dé el fingerprint de SHA256 de la aplicación: el desarrollador lo genera en el paso 1 de su parte de la configuración.
- Haz clic en Agregar fingerprint de SHA256.
- Pega el SHA256.
Nota
Si tu aplicación tiene varias compilaciones y versiones para pruebas y producción, puedes agregar el fingerprint de SHA256 de cada uno de ellos en la misma configuración de OneLink.
De esta manera, puedes probar un solo OneLink en cualquier compilación o versión de la aplicación, ya sea que esté en desarrollo o en producción.
Paso 3: configurar un subdominio de OneLink
- Elige un subdominio de OneLink y complétalo en el campo subdominio de enlaces profundos (iOS9/Android 6 y versiones superiores) disponible en la sección Configuración adicional.
- Después de agregar un subdominio en la configuración de OneLink, se crea un fragmento de filtro de intención.
- Copia el fragmento de XML en la parte inferior de la sección de enlaces de aplicaciones y dáselo a tu desarrollador: el desarrollador necesita este fragmento de XML para el paso 2 de su parte de la configuración.
Enlaces profundos en actividades específicas
Los enlaces de aplicaciones de Android te permiten establecer enlaces profundos entre los usuarios y actividades específicas.
Paso 1: crea enlaces de atribución personalizados
Sigue las instrucciones de la guía para crear enlaces de atribución personalizados.
Por ejemplo, supongamos que creas los siguientes enlaces:
- demo.onelink.me/ST6c/c0aae4f
- demo.onelink.me/ST6c/6f0b5993
- demo.onelink.me/ST6c/b40bder4
Paso 2: define el filtro de intención para cada actividad
Para cada actividad con la cual deseas establecer enlaces, configura un filtro de intención que corresponda a cada enlace.
<activity android:name="com.king.candycrushsaga.DeepLink">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="demo.onelink.me"
android:pathPrefix="/ST6c/c0aae4f" />
</intent-filter>
</activity>
<activity android:name="com.appsflyersmaple.guide.DeepLink2">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="demo.onelink.me"
android:pathPrefix="/ST6c/6f0b5993" />
</intent-filter>
</activity>
<activity android:name="com.king.candycrushsaga.DeepLink3">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="demo.onelink.me"
android:pathPrefix="/ST6c/b40bder4" />
</intent-filter>
</activity>
Cómo mantener el esquema URI
Es importante implementar un esquema URI, ya que algunos dispositivos Android aún no son compatibles con enlaces de aplicaciones y recurren al método de esquema URI como opción de reserva. Consulta nuestra guía sobre cómo configurar el esquema URI para enlaces profundos.
Limitaciones de los enlaces de aplicaciones
Los enlaces de aplicaciones tienen algunas limitaciones que debes tener en cuenta.
Cómo abrir las aplicaciones desde navegadores
Los enlaces de aplicaciones solo funcionan cuando se hace clic en ellos. Por ejemplo, cuando se hace clic en un enlace en una página web o correo electrónico. Pegar el enlace en la barra de direcciones del navegador no hace enlaces profundos en la aplicación.
Subdominio de OneLink
Si bien el subdominio de OneLink se puede cambiar en cualquier momento, esto hace que todas las URL de OneLink existentes que emplean el subdominio original dejen de funcionar.
OneLink en aplicaciones de redes sociales
No todas las aplicaciones, incluidas las aplicaciones de redes sociales, son totalmente compatibles con los enlaces de aplicaciones. Para conocer más detalles, consulta esta guía.
Otras limitaciones y problemas
Es posible que haya otras limitaciones con los enlaces de aplicaciones. Visita la sección de resolución de problemas de OneLink para conocer más detalles.
Cómo evitar la ventana de diálogo de selección de aplicaciones
Si ves la ventana de diálogo de selección de aplicaciones cuando pruebes tus enlaces OneLink, asegúrate de firmar tu aplicación, incluso si es una aplicación de depuración. El certificado que usas para firmar la aplicación es el mismo que usas para generar la huella digital SHA256 cuando configuras OneLink para enlaces de aplicaciones.
Opción de reserva de enlaces profundos
Los enlaces profundos ofrecen una gran experiencia para el usuario, pero los enlaces profundos rotos ¡definitivamente no! Es posible que tengas enlaces profundos rotos por diversas causas, desde una configuración incorrecta hasta cambios repentinos en el comportamiento de la plataforma de fuentes de medios.
Por lo tanto, cada vez que crees un OneLink para enlaces profundos, te recomendamos usar una opción de reserva.
af_ios_url
y af_android_url
redirigen a los usuarios de OneLink a páginas de aterrizaje, en lugar de a tiendas de aplicaciones. Sin embargo, cuando se aplican enlaces profundos en un OneLink, este tiene prioridad por sobre el redireccionamiento a páginas de aterrizaje.
Esto significa que es seguro usar estos parámetros con enlaces profundos. Si el enlace profundo funciona correctamente, se establece el enlace profundo con el usuario tal como se planificó. Si el enlace profundo está roto por algún motivo, se dirige al usuario a la página de aterrizaje que elijas (p. ej., tu página de inicio) en lugar de quedar atascado.
Obtén más información sobre parámetros de redireccionamiento aquí.
Reportes sobre enlaces profundos
Los enlaces profundos son una parte fundamental de las campañas de retargeting. En muchos casos, las campañas de retargeting se basan en ofrecer a los usuarios que regresan contenido personalizado, como créditos o acceso a contenido premium.
Para permitir que AppsFlyer procese y atribuya estas acciones de retargeting y enlaces profundos, los desarrolladores de aplicaciones DEBEN reportar al SDK de AppsFlyer cada vez que se establezcan enlaces profundos.
Para implementar esto, sigue estas instrucciones para iOS y Android.
Asignación de aplicaciones a varias plantillas de OneLink
Si bien puedes usar una sola plantilla de OneLink para crear una cantidad ilimitada de URL de OneLink, en algunos casos, tal vez debas asignar una aplicación a más de una plantilla de OneLink.
Por ejemplo, si tienes varias versiones de una aplicación de Android para mercados fuera de la tienda, es posible que necesites una plantilla de OneLink separada por versión de Android, y aún así puedes tener la misma aplicación de iOS asignada a todas ellas.
Por cada plantilla a la cual agregas una aplicación (después de la primera plantilla), debes completar las instrucciones a continuación, de acuerdo con el método correspondiente de enlaces profundos.
Android: esquema URI
No es necesario realizar ninguna acción especial.
iOS: enlaces universales
Para que el nuevo OneLink funcione, el archivo AASA de la aplicación debe estar actualizado. Después de crear una plantilla de OneLink nueva, envía una versión nueva a la tienda. Solo los usuarios de iOS que actualizaron a la nueva versión pueden activar una URL de OneLink incorporada en la plantilla nueva.
Android: enlaces de aplicaciones
- Después de crear una plantilla nueva de OneLink, copia el nuevo ID de OneLink generado para la plantilla.
- Copia el fragmento de XML en la parte inferior de la sección de enlaces de aplicaciones y agrégalo a tu archivo AndroidManifest.xml que está dentro de la intención en la que deseas establecer el enlace profundo, además de las intenciones anteriores.
- Lanza la nueva versión en la tienda. Solo los usuarios de Android que hayan actualizado a la nueva versión podrán activar una URL de OneLink incorporada en la plantilla nueva.
Nota
Las cuentas de AppsFlyer están limitadas a un máximo de 100 plantillas de OneLink definidas por cuenta.
Acceso a los datos de enlaces profundos
Hasta ahora, en esta guía se trató la configuración de los 3 métodos de enlaces profundos directos, que permiten a los usuarios existentes iniciar la aplicación móvil directamente después de hacer clic en la URL.
Un requisito muy común es obtener datos de la URL en la aplicación recién iniciada para redirigir a usuarios de manera programática o para proporcionar otro tipo de contenido personalizado.
Para usuarios NUEVOS, estos datos se denominan Datos de conversión (como se explica aquí) y, para los usuarios EXISTENTES, se denominan Datos de recaptación (como se explica aquí).
Ejemplo
Wendy, la marketer móvil de la aplicación móvil com.burgers, ejecuta una campaña de retargeting en la fuente de medios xnetwork. La campaña ofrece una bonificación gratuita (papas, burrito o gaseosa) para cualquier usuario, nuevo o existente, que pida una hamburguesa a través de la aplicación.
Para hacerlo, Wendy agrega el parámetro af_sub1 al enlace de retargeting, que tiene la bonificación seleccionada por el usuario, p. ej., "&af_sub1=fries". El enlace también contiene el parámetro af_dp para establecer enlaces profundos en la actividad predeterminada.
Con cada inicio de la aplicación, la aplicación necesita verificar si se hizo clic en el enlace recientemente, extraer el valor de af_sub1 y mostrarle la bonificación correcta al usuario.
Cuando un usuario existente hace clic en el enlace de retargeting, la aplicación se inicia y los datos de recaptación del enlace de retargeting se analizan y quedan disponibles a través de la función del SDK onAppOpenAttribution
.
Cuando un usuario nuevo, ya sea que regrese o sea realmente nuevo, inicia la aplicación, la información del enlace está disponible a través de la API de datos de conversión.
Al usar estos métodos, com.burgers siempre está disponible para darle al usuario potencial o existente la bonificación exacta que seleccionó.
Acceso a los datos de conversión para enlaces profundos diferidos
Cuando los usuarios activos hacen clic en OneLink, es posible establecer enlaces profundos con ellos y redirigirlos a cualquier contenido dentro de tu aplicación.
¿Cómo puedes ofrecerles la misma experiencia a los usuarios potenciales?
Cuando hacen clic en OneLink, se los redirige a la tienda de aplicaciones que coincide con su tipo de dispositivo, desde donde instalan la aplicación. En el primer inicio, la aplicación se abre en la actividad predeterminada independientemente del anuncio en el que hicieron clic.
Para permitir una experiencia unificada de enlaces profundos para todos los usuarios, ya sean existentes o nuevos, AppsFlyer proporciona la solución de enlaces profundos diferidos.
Tal como se muestra más arriba, cuando los usuarios nuevos inician la aplicación por primera vez, AppsFlyer proporciona detalles de atribución a la aplicación, incluidos los datos de enlaces profundos, si existen. Con estos datos, el desarrollador de la aplicación puede enviar a un usuario nuevo a cualquier contenido dentro de la aplicación, exactamente como si fuera un usuario existente con quien se establece un enlace profundo de forma directa.
Para implementar los enlaces profundos diferidos, sigue las instrucciones de esta guía.
Consejo
Si puedes dirigirte solo a usuarios móviles existentes con tus campañas de enlaces profundos, no tienes que implementar enlaces profundos diferidos. Sin embargo, si es posible que una parte considerable de tu audiencia objetivo no tenga instalada tu aplicación (por ejemplo, usuarios que la desinstalaron recientemente), la implementación de enlaces profundos diferidos es importante para lograr una buena experiencia y la retención de usuarios.
Acceso a datos de recaptación para enlaces profundos directos
El acceso a los datos de recaptación de usuarios existentes, con los que se establecen enlaces profundos, también es fundamental en estos casos:
- iOS 9.2 y versiones superiores: para estos usuarios, la actividad del enlace profundo (enlaces universales) solo inicia las aplicaciones móviles en la actividad predeterminada independientemente de los parámetros de OneLink.
- Android 6.0 y versiones superiores: lo mismo se aplica a estos usuarios, cuando se configuran los enlaces de aplicaciones.
- Todo Android: todos los usuarios de Android pueden seguir usando los esquemas URI para establecer enlaces profundos y redirigirse a la ubicación específica. Sin embargo, para proporcionar contenido personalizado más allá del redireccionamiento (p. ej., enviar usuarios a una actividad de bonificación y especificar el tipo de bonificación en el enlace), se necesitan los datos de recaptación.
La función del SDK onAppOpenAttribution
(que se describe a continuación) permite acceder a todos los datos de recaptación para todos los tipos de usuarios.
En la captura a continuación, se muestra el flujo para obtener los datos de atribución o de recaptación:
Los datos de conversión tienen el parámetro is_first_launch, que solo tiene el valor "true" (verdadero) cuando se inicia por primera vez y "false"(falso) en los demás casos.
El método onAppOpenAttribution
El método onAppOpenAttribution
analiza los datos y los devuelve a través de un objeto NSDictionary <key, value>
(mapa hash) en iOS o un objeto Map <key, value>
en Android. Esto es verdadero cuando se usan enlaces de atribución específicos de la aplicación, esquemas URL o OneLinks cortos.
Sin embargo, cuando los usuarios establecen enlaces profundos directamente con enlaces universales o de aplicaciones, el método onAppOpenAttribution
devuelve el enlace completo sin analizar, debido a que la aplicación se abre directamente sin ir a AppsFlyer primero.
Analiza los valores en los datos de URL y ofrece el contenido de manera programática o redirige dentro de la aplicación, según corresponda.
Se debe llamar al método onAppOpenAttribution
desde la misma clase/delegado que se llama al método onConversionDataReceived
(iOS) o onInstallConversionDataLoaded
(Android).
Consejo
Recomendamos usar los valores de parámetros af_dp
aquí también para crear una lógica unificada en todas las situaciones de enlaces profundos.
Para ambos métodos (onAppOpenAttribution
y onConversionDataReceived
/ onInstallConversionDataLoaded
), el usuario debe establecer el delegado de rastreo para el SDK de AppsFlyer, tal como se muestra en el código a continuación:
Nota
El flujo de enlaces profundos para iOS es ligeramente diferente que el de Android. Consulta el diagrama de flujo a continuación para ver un ejemplo.

En el diagrama de flujo de arriba, se demuestra lo siguiente:
- El usuario hace clic en un enlace profundo.
-
Los métodos
continueUserActivity
u openURL notifican al SDK de AppsFlyer que la aplicación se abrió a través de un enlace profundo. - El SDK de AppsFlyer registra el inicio de la aplicación.
- A continuación, se llama al método
onAppOpenAttribution
- El método
onAppOpenAttribution
contiene datos del enlace profundo. - A continuación, los datos del enlace profundo se usan para redirigir a los usuarios a la actividad correspondiente y proporcionar el contenido pertinente.
Nota
En el código a continuación, se enumeran dos métodos: onInstallConversionDataLoaded
y onAppOpenAttribution
onInstallConversionDataLoaded
es para los enlaces profundos diferidos.
onAppOpenAttribution
es para los enlaces profundos directos.
AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
/* for deferred deep linking */
@Override
public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
for (String attrName : conversionData.keySet()) {
Log.d(AppsFlyerLib.LOG_TAG, "conversion_attribute: " + attrName + " = " +
conversionData.get(attrName));
}
}
@Override
public void onInstallConversionFailure(String errorMessage) {
Log.d(AppsFlyerLib.LOG_TAG, "error onAttributionFailure : " + errorMessage);
}
/* for direct deep linking */
@Override
public void onAppOpenAttribution(Map<String, String> conversionData) {
for (String attrName : conversionData.keySet()) {
Log.d(AppsFlyerLib.LOG_TAG, "onAppOpen_attribute: " + attrName + " = " +
conversionData.get(attrName));
}
}
@Override
public void onAttributionFailure(String errorMessage) {
Log.d(AppsFlyerLib.LOG_TAG, "error onAttributionFailure : " + errorMessage);
}
});
El delegado de seguimiento debe pasarse en el archivo de encabezado de delegados, de la siguiente manera:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, AppsFlyerTrackerDelegate{
// ...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
AppsFlyerTracker.shared().appsFlyerDevKey = "repLaceWithYourDevKeY"
AppsFlyerTracker.shared().appleAppID = "123456789"
// ...
AppsFlyerTracker.shared().delegate = self
}
func onConversionDataReceived(_ installData: [AnyHashable: Any]) {
//Handle Conversion Data (Deferred Deep Link)
}
func onConversionDataRequestFailure(_ error: Error?) {
// print("\(error)")
}
func onAppOpenAttribution(_ attributionData: [AnyHashable: Any]) {
//Handle Deep Link Data
}
func onAppOpenAttributionFailure(_ error: Error?) {
}
// 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
}
@interface AppDelegate : UIResponder <UIApplicationDelegate, AppsFlyerTrackerDelegate>
In AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[AppsFlyerTracker sharedTracker].appsFlyerDevKey = @"repLaceWithYourDevKeY";
[AppsFlyerTracker sharedTracker].appleAppID = @"123546789";
[AppsFlyerTracker sharedTracker].delegate = self;
}
-(void)onConversionDataReceived:(NSDictionary*) installData {
//Handle Conversion Data (Deferred Deep Link)
}
-(void)onConversionDataRequestFailure:(NSError *) error {
NSLog(@"%@",error);
}
- (void) onAppOpenAttribution:(NSDictionary*) attributionData {
//Handle Deep Link
}
- (void) onAppOpenAttributionFailure:(NSError *)error {
NSLog(@"%@",error);
}
// Reports app open from a Universal Link for iOS 9 or above
- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler {
[[AppsFlyerTracker sharedTracker] continueUserActivity:userActivity restorationHandler:restorationHandler];
return YES;
}
// Reports app open from deep link from apps which do not support Universal Links (Twitter) and for iOS8 and below
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {
[[AppsFlyerTracker sharedTracker] handleOpenURL:url sourceApplication:sourceApplication withAnnotation:annotation];
return YES;
}
// Reports app open from deep link for iOS 10
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
options:(NSDictionary *) options {
[[AppsFlyerTracker sharedTracker] handleOpenUrl:url options:options];
return YES;
}
En AF GameObject dentro del método Start
:
#if UNITY_IOS
/* Mandatory - set your iOS app ID */
AppsFlyer.setAppID("123456789");
/* Call getConversionData() to get the conversion data in iOS*/
AppsFlyer.getConversionData();
AppsFlyer.trackAppLaunch();
#elif UNITY_ANDROID
/* Mandatory - set your Android package name */
AppsFlyer.setAppID ("com.company.app");
/* For getting the conversion data in Android, you need to add the "AppsFlyerTrackerCallbacks" listener.*/
AppsFlyer.init ("AF_DEY_KEY","AppsFlyerTrackerCallbacks");
#endif
Implementa tu lógica en el método didReceiveConversionData
dentro de la clase AppsFlyerTrackerCallbacks
:
public class AppsFlyerTrackerCallbacks : MonoBehaviour {
public Text callbacks;
// Use this for initialization
void Start () {
print ("AppsFlyerTrackerCallbacks on Start");
}
public void didReceiveConversionData(string conversionData) {
print("AppsFlyerTrackerCallbacks:: got conversion data = " + conversionData);
}
public void didReceiveConversionDataWithError(string error) {
print ("AppsFlyerTrackerCallbacks:: got conversion data error = " + error);
}
public void didFinishValidateReceipt(string validateResult) {
print ("AppsFlyerTrackerCallbacks:: got didFinishValidateReceipt = " + validateResult);
}
public void didFinishValidateReceiptWithError (string error) {
print ("AppsFlyerTrackerCallbacks:: got idFinishValidateReceiptWithError error = " + error);
}
public void onAppOpenAttribution(string validateResult) {
print ("AppsFlyerTrackerCallbacks:: got onAppOpenAttribution = " + validateResult);
}
public void onAppOpenAttributionFailure (string error) {
print ("AppsFlyerTrackerCallbacks:: got onAppOpenAttributionFailure error = " + error);
}
public void onInAppBillingSuccess () {
print ("AppsFlyerTrackerCallbacks:: got onInAppBillingSuccess succcess");
}
public void onInAppBillingFailure (string error) {
print ("AppsFlyerTrackerCallbacks:: got onInAppBillingFailure error = " + error);
}
void printCallback(string str) {
callbacks.text += str + "\n";
}
}
Enlaces profundos con SRN
Las SRN (redes de autorreporte, p. ej., Facebook y Twitter) tienen sus propios métodos exclusivos para establecer enlaces profundos, que no incluyen enlaces de atribución de servicios de atribución externos.
Entonces, ¿cómo puedes establecer enlaces profundos para tus usuarios y obtener los datos pertinentes de las SRN?
Enlaces profundos directos con SRN
Las SRN emplean sus propios métodos para efectuar enlaces profundos.
Desafortunadamente, esto significa que NO se llama al método onAppOpenAttribution
cuando el dispositivo de un usuario efectúa enlaces profundos desde una SRN.
Por lo tanto, si se necesitan los datos de enlaces profundos directos dentro de la aplicación, el propietario de la aplicación debe usar los métodos de las SRN para obtenerlos al momento del inicio de la aplicación.
Enlaces profundos diferidos con SRN
En cambio, es posible efectuar enlaces profundos diferidos con SRN.
AppsFlyer siempre recibe los datos de conversión y los pone a disposición de la aplicación en el primer inicio.
A los usuarios nuevos que instalan la aplicación después de hacer clic en una campaña de enlaces profundos o retargeting en una SRN se los puede redirigir dentro de la aplicación al momento del inicio, utilizando los datos de conversión.
Sin embargo, en el caso de las SRN, los parámetros regulares de enlaces profundos de AppsFlyer, como af_dp, no están presentes como parte de datos de enlaces profundos.
Para usar estos datos dentro de la aplicación, el desarrollador necesita emplear una lógica adicional basada en los parámetros disponibles, como campaña, conjunto de anuncios o nombres de anuncios individuales.
Ejemplo
Jill, la marketer móvil de greatapp, decide ejecutar una campaña de enlaces profundos en Facebook, dirigida a una audiencia general.
La campaña redirige a todos los usuarios que hagan clic a una actividad "bonificada".
Jack, el desarrollador móvil, agrega esta lógica después de obtener los datos de conversión:
1. ¿Se originan en Facebook ("is_fb=true")?
2. Si es verdadero, se obtiene el valor del parámetro del conjunto de anuncios.
3. Si el valor contiene la palabra "bonificación", envía al usuario a la actividad "bonificada".
Empleando los métodos de Facebook, se redirige a los usuarios existentes que hagan clic en el anuncio directamente a la actividad, mientras que los usuarios nuevos obtienen la misma experiencia a través de los datos de conversión de AppsFlyer.
Armar URL de OneLink
Puedes crear y usar una cantidad ilimitada de URL de OneLink personalizadas en función de cada plantilla configurada de OneLink:
- Ve al panel de control de la aplicación que corresponda (es decir, una de las aplicaciones configuradas en la plantilla de OneLink correspondiente).
- Haz clic en Gestión de enlaces.
- Selecciona la opción de enlace multiplataforma para la URL de OneLink.
- Nombra el enlace nuevo en la sección de configuración general.
- Completa los parámetros de atribución, como Fuente de medios, Campaña, conjunto de anuncios o parámetros del suscriptor.
- Para permitir la atribución de retargeting, activa el botón de Campaña de retargeting.
- Si es necesario, agrega parámetros de enlaces profundos o redireccionamiento.
- Si es necesario, usa la sección de configuración avanzada para personalizar la ventana retrospectiva por clics.
- Si es necesario, establece el costo de instalación fijo en el enlace de atribución.
- Es muy recomendable que uses enlaces cortos.
- Guarda el enlace, cópialo y úsalo con tus propios medios o con cualquier otra fuente de medios pertinente.
Uso de OneLink con partners integrados
En algunos casos pocos frecuentes, es posible que quieras usar las funciones de diagnóstico y redireccionamiento de OneLink con partners integrados en lugar de usar tus propios enlaces de atribución.
Ingresa aquí para recibir instrucciones.
Probar las URL de OneLink
Para probar los enlaces profundos de manera rápida y fácil, puedes utilizar lo siguiente:
- Para Android: aplicación de prueba de integración del SDK de AppsFlyer
- Para iOS: página de pruebas de integración del SDK del panel de control
De modo alternativo o adicional, también puedes probar manualmente los enlaces profundos dentro de tu aplicación. Las pruebas para los 3 métodos de enlaces profundos se describen a continuación.
Nota
AppsFlyer es compatible con versiones de aplicaciones de prueba que aún no están activas (p. ej., pendientes de aprobación o en desarrollo).
Para hacerlo, sigue todas las instrucciones a continuación con una distinción: cada vez que se te indique instalar la aplicación, hazlo de forma local en lugar de hacerlo desde el mercado.
Probar enlaces profundos directos para URI con esquema
-
Instala e inicia la aplicación en tu dispositivo (o en el simulador de iPhone en iOS).
[Si la aplicación está recién instalada, lleva la aplicación al fondo y tráela de vuelta al primer plano dos o más veces]. - Prepara una URL de OneLink para la aplicación, que tenga el parámetro af_dp con una ruta de esquema válida (por ejemplo, "greatapp://cars").
- En el dispositivo probado, pega el enlace en un mensaje de correo electrónico, en las notas, en un SMS, en un generador de códigos QR, etc.
- Haz clic en el enlace.
Resultado esperado: la aplicación debe abrirse en la actividad solicitada señalada por el parámetro af_dp.
Probar enlaces profundos diferidos para URI con esquema
- Cierra sesión para salir de la aplicación.
- Elimina la aplicación.
- Prepara una URL de OneLink para la aplicación, que tenga el parámetro af_dp (u otro) con una ruta de esquema válida (por ejemplo, "greatapp://cars").
- En el dispositivo probado, pega el enlace en un mensaje de correo electrónico, en las notas, en un SMS, en un generador de códigos QR, etc.
- Haz clic en el enlace.
- Instala e inicia la aplicación en tu dispositivo (o en el simulador de iPhone en iOS).
Resultado esperado: la aplicación captura el enlace (datos de conversión) en el primer inicio. Se extrae el parámetro af_dp y se redirige al usuario dentro de la aplicación según el valor del parámetro af_dp.
Probar enlaces universales o enlaces de aplicaciones de Android
-
Instala e inicia la aplicación en tu dispositivo (o en el simulador de iPhone en iOS).
[Si la aplicación está recién instalada, lleva la aplicación al fondo y tráela de vuelta al primer plano dos o más veces]. - Prepara una URL de OneLink para la aplicación, que tenga el parámetro af_dp (u otro) con una ruta de esquema válida (por ejemplo, "greatapp://cars").
-
iOS: pega el enlace en Notes, iMessage o en un mensaje de correo electrónico usando Apple Mail Client.
Android: pega el enlace en un mensaje de correo electrónico, en Chrome, en un SMS, en un generador de códigos QR, etc. Importante: no uses Slack, Facebook ni ninguna otra aplicación de red social para hacer clic en el enlace. - Haz clic en el enlace.
Resultado esperado: la aplicación se abre inmediatamente sin redireccionamiento a través del navegador. Se extrae el parámetro af_dp y se redirige al usuario dentro de la aplicación según el valor del parámetro af_dp.
Consejo
¿Notas un comportamiento inesperado en los dispositivos con iOS?
1. Reinicia el dispositivo (apágalo y vuelve a encenderlo). En iOS 11, esto a menudo soluciona los problemas raros de derechos.
2. No pegues el enlace en Safari: actualmente iOS impide enlaces profundos desde la barra de direcciones de cualquier navegador.
3. ¿Algo más? Revisa la sección de preguntas frecuentes y resolución de problemas.
Cómo encapsular y acortar OneLink
Los enlaces profundos con enlaces universales de iOS y enlaces de aplicaciones de Android requieren asociar tu dominio de OneLink (p. ej., myapp.onelink.me) dentro del código de la aplicación. El sistema operativo reconoce este dominio como un dominio que invoca a la aplicación cuando se hace clic.
El encapsulamiento o el acortamiento de una URL de OneLink mediante acortadores de enlaces EXTERNOS (p. ej., bit.ly) rompe los enlaces profundos a través de los enlaces universales de iOS o de los enlaces de aplicaciones de Android, ya que desactiva la función del sistema operativo que identifica qué aplicación es la que se debe invocar con el enlace.
Las URL de OneLink encapsuladas o acortadas igual redirigen a las tiendas de aplicaciones o páginas de aterrizaje, pero implican una instancia de redireccionamiento adicional que afecta la experiencia del usuario final.
Mejores prácticas
Antes de emprender una campaña de enlaces profundos a escala completa, te recomendamos que leas el artículo Mejores prácticas para establecer enlaces profundos. En este artículo, se explican los errores y las soluciones comunes a la hora de implementar enlaces profundos en dispositivos móviles con OneLink.
Para leer otras preguntas frecuentes y consejos para la resolución de problemas, consulta a continuación.
Preguntas Frecuentes
¿Puedo hacer enlaces profundos sin OneLink?
Sí, pero solo en parte. Aunque OneLink es una herramienta integral para los enlaces profundos, las URL regulares específicas de una aplicación también pueden establecer enlaces profundos con los usuarios que utilizan el esquema URI. En efecto, esto significa que puedes usar enlaces profundos en aplicaciones de Android si simplemente agregas el parámetro af_dp a un enlace de atribución regular de AppsFlyer.
Los enlaces universales, que constituyen el método disponible de enlaces profundos para más del 98% de los usuarios de iOS, solo pueden activarse mediante OneLink y no a través de enlaces de atribución regulares de plataformas únicas.
¿Existe alguna limitación para enlaces profundos en las aplicaciones de redes sociales?
Desafortunadamente, sí.
Las aplicaciones de redes sociales tratan los enlaces profundos de publicaciones virales de diferentes maneras, lo que, a menudo, afecta la experiencia del usuario. La solución alternativa que AppsFlyer recomienda para el diagnóstico y el redireccionamiento de dispositivos a través de OneLink es mediante páginas de aterrizaje, tal como se explica en la guía de Instancias de redireccionamiento de OneLink.
Para establecer enlaces profundos, existe otra solución alternativa, que puede usarse en casos en los que el enlace universal o el enlace de aplicación está roto debido a la aplicación host, p. ej., las historias de Instagram con OneLink. La solución es forzar el uso de un esquema URI para establecer enlaces profundos.
1. Agrega el parámetro af_dp a OneLink y especifica la ruta a la actividad vinculada mediante el enlace profundo (más detalles).
2. Agrega &af_force_deeplink=true
al enlace de atribución para forzar el uso de af_dp
Esta solución alternativa funciona bien para los usuarios activos, es decir, los usuarios que tienen la aplicación instalada en sus dispositivos. Sin embargo, en iOS, los usuarios de Safari que no tengan la aplicación instalada reciben un mensaje de error de sistema y, luego, se los redirige a la opción de reserva definida.
¿Puedo eliminar una plantilla de OneLink?
No puedes eliminar una plantilla de OneLink. No recomendamos eliminar plantillas de OneLink porque podría afectar las campañas activas. En lugar de eso, fíjate si puedes cambiar la configuración de la plantilla. Si deseas eliminar la plantilla de OneLink de todos modos, comunícate con tu gerente de atención al cliente o envíanos un mensaje de correo electrónico a hello@appsflyer.com.
¿Puedo cambiar el subdominio de OneLink?
Sí, pero si cambias el subdominio de OneLink, es posible que dejen de funcionar los enlaces profundos y los enlaces personalizados. Siempre es mejor crear una nueva configuración de OneLink y enlaces personalizados, y dejar de usar de a poco la configuración anterior de OneLink y los enlaces personalizados que dependen de ella.
Cómo cambiar el subdominio de OneLink
- Si deseas cambiar el subdominio de OneLink, puedes hacerlo en la configuración de la plantilla de OneLink.
- Actualiza los enlaces personalizados que dependen de la configuración de OneLink:
- Ve a Gestión de enlaces personalizados.
- Haz clic en el enlace que quieres actualizar.
- No hagas ningún cambio, simplemente haz clic en Actualizar enlace en la parte inferior de la página.
- Actualiza tu configuración de Android: consulta la sección sobre configuración de enlaces de aplicaciones Android, específicamente la parte acerca de agregar filtros de intención a las actividades en AndroidManifest.xml.
- Actualiza tu configuración de iOS: consulta la sección sobre configuración de enlaces universales, específicamente la parte acerca de configurar dominios aprobados en XCode.
- Publica ambas aplicaciones en las tiendas de aplicaciones.
Los enlaces profundos no funcionan para los usuarios con versiones anteriores de la aplicación, antes de los cambios al subdominio de OneLink. Por este motivo, necesitas publicar las aplicaciones en las tiendas de aplicaciones después de cambiar el subdominio de OneLink.
¿Puedo agregar parámetros a af_dp?
Sí... y no. af_dp puede contener un valor URI, y cualquier parámetro puede transferirse como parte de la ruta del URI, por ejemplo, af_dp=greatapp%3A%2F%2Fparam1%2Fparam2 (greatapp://param1/param2).
Lo que es más simple, puedes agregar cualquier parámetro al enlace de atribución después del carácter "?".
Sin embargo, NO se recomienda la concatenación de parámetros al valor de af_dp después de "?". Es posible que los parámetros se descarten y no estén disponibles a través de los datos de conversión o de otras API.
Un mal ejemplo sería: af_dp=greatapp%3A%2F%2F%3Fparam1%3Da%26param2%3Db (greatapp://?param1=a¶m2=b).
¡Importante!
No se permiten los siguientes caracteres: [<>;(){}`']
Resolución de Problemas
Se inicia la aplicación en iOS, pero no se hace una devolución de llamada de onAppOpenAttribution.
Esto significa que la integración del SDK para enlaces profundos no se completó completamente. Falta el método continueUserActivity
en AppDelegate y debe invocarse.
Se inicia la aplicación en iOS, pero inmediatamente redirige a la tienda de aplicaciones.
Esto generalmente ocurre como resultado de un código dentro de la aplicación que efectúa un redireccionamiento a un navegador cuando un enlace https inicia la aplicación.
iOS: al tocar el enlace, siempre se redirige a la tienda de aplicaciones
En iOS 9 y 10 (eliminada de iOS 11), hay una opción para ignorar los enlaces profundos. Cuando se abre una aplicación mediante enlaces universales, iOS muestra un enlace de derivación para evitar enlaces profundos en la parte superior derecha que configura ese enlace para que se abra sin enlaces profundos.
Se trata de una configuración específica de cada aplicación que se guarda en cada dispositivo de forma individual. La configuración se conserva incluso si eliminas la aplicación y la vuelves a instalar. La única manera de revertir esto es volver a activar el comportamiento de enlaces universales para esa aplicación en tu dispositivo. Existen un par de maneras de hacer esto:
Para restablecer esta configuración, pega el enlace OneLink en Notes o iMessage (o alguna otra aplicación que sea compatible con enlaces universales) y mantenlo pulsado. Verás una opción de "Abrir en [aplicación]". Selecciónala y, después de eso, volverán a funcionar todos los enlaces universales para esa aplicación.
Selecciona Abrir en tu aplicación (p. ej., abrir en LoginBox).
Ahora, el enlace profundo está restablecido.
Toqué durante un momento el enlace, pero no veo la opción "Abrir en tu aplicación".
-
Las aplicaciones de iOS se desarrollan con un archivo de aprovisionamiento (similar a una licencia). Este archivo se genera en la consola para desarrolladores de Apple y debe estar habilitado para enlaces universales.
- Asegúrate de que el id. del equipo de la aplicación coincida con el que se introdujo en la página de configuración de OneLink.
Enlaces universales de iOS: se abre Safari en lugar de la aplicación.
Elimina la aplicación, vuelve a instalarla y ejecútala de nuevo. Si continúa el problema, prueba a agregar otra fila en Associate Domains (Asociar dominios) (para que cambie). A continuación, elimina la aplicación y repite el proceso. También asegúrate de que tu OneLink tenga el mismo dominio que el configurado en la aplicación.
Enlaces universales de iOS: intenté todo, pero siguen sin funcionar. ¡Ayuda!
Sí, te entendemos. Si todo lo anterior no resolvió el problema, intenta generar nuevamente los archivos de aprovisionamiento para tu aplicación. Descárgalos una vez más y haz doble clic para instalarlos en Xcode.
También puedes probar a eliminar la aplicación y volver a instalarla con una versión avanzada.
Enlaces universales de iOS: problema con iOS 11.2
iOS 11.2 y todas las revisiones posteriores tienen un error que, a veces, impide establecer enlaces profundos a través de enlaces universales.
Aparentemente, el archivo apple-app-site-association, que se usa para abrir aplicaciones con enlaces universales y se descarga automáticamente con cualquier instalación de aplicaciones de iOS, a veces, produce un error en la descarga con instalaciones de aplicaciones de dispositivos que ejecutan iOS 11.2 y versiones superiores. Sin este archivo en el dispositivo de iOS, los enlaces universales no pueden abrir directamente las aplicaciones.
Si observas este problema mientras realizas pruebas de enlaces profundos, desinstala la aplicación, reinicia tu dispositivo iOS (que se encuentra en la lista blanca) y vuelve a instalar la aplicación. ¿No fue de ayuda? Inténtalo de nuevo.
Aún no está claro qué tan generalizado realmente es este problema esporádico, aunque se ha reproducido en varios dispositivos iPhone con el sistema operativo iOS 11.2. Esperamos que Apple resuelva este error pronto, ya que puede afectar los enlaces profundos de más de 2/3 de sus usuarios de iOS.
Nota: Puedes hacer clic en el botón Seguir que se encuentra en la parte superior de la pantalla para recibir actualizaciones cuando este problema se solucione o cuando se actualice este artículo.
¿Por qué mis usuarios que optaron por la exclusión no pueden establecer enlaces profundos?
Los usuarios que optan por la exclusión afectan la correcta atribución y recolección de datos. Aquí se muestra por qué impiden el funcionamiento correcto del mecanismo de enlaces profundos y cómo se puede solucionar este problema.
Enlaces de aplicaciones y enlaces universales: respuesta de un enlace largo de OneLink en onappopenattribution
Con los enlaces de aplicaciones o enlaces universales, existe una diferencia en la respuesta de onAppOpenAttribution según el tipo de OneLink que se use.
Tanto para iOS como para Android, cuando se usa la versión corta de OneLink, los datos de conversión constituyen un mapa estructurado de todos los parámetros incluidos en el enlace:
Ejemplo:
{
af_dp: "superapp://Deeplink",
pid: "media_source_name"
c: "campaign_name",
link: "https://abcd.onelink.me/12ab/12ab34c"
is_retargeting: true
}
Por otro lado, la versión larga de OneLink produce un mapa con un par único de clave-valor que contiene el OneLink completo.
{
"link": "https://abcd.onelink.me/12ab?pid=media_source&c=campaign_name&is_retargeting=true&af_dp=superapp%3A%2F%2FDeepLink"
}
La respuesta para el OneLink corto está bien estructurada y es más fácil de analizar. Por lo tanto, te recomendamos que uses la versión corta de OneLink.