SDK de iOS - Soporte para deep links

Soporte para deep links

Los deep links dirigen a los usuarios a contenido específico dentro de tu aplicación. Cuando los usuarios tocan un deep link en un dispositivo con tu aplicación instalada, la aplicación se abre directamente en el contenido previsto, como una página de producto o una experiencia específica.

Los tracking links de Singular admiten tanto deep linking estándar (para aplicaciones instaladas) como deep linking diferido (para nuevas instalaciones). Para obtener información completa, consulta Preguntas frecuentes sobre deep linking y Singular Links FAQ .


Requisitos

Requisitos previos

Completa los Requisitos previos de Singular Links para habilitar el deep linking en tu aplicación.

Pasos de configuración requeridos:

  • Associated Domains: En Xcode, agrega un subdominio personalizado de Singular en Signing & Capabilities > Associated Domains
  • URL Types: Agrega el esquema de la aplicación a tus URL Types en Info > URL Types
  • Plataforma de Singular: Agrega tu Team ID y Scheme de Apple Developer en la página Apps de la plataforma de Singular

Notas:

  • Si la aplicación ya está configurada para usar iOS Universal Links, el dominio de Universal Link ya existe en Associated Domains y puede permanecer. Este dominio debe agregarse a la opción de configuración Supported Domains , como se indica en la sección avanzada a continuación
  • También debes incluir el dominio personalizado de Singular Link , para que Singular pueda rastrear las atribuciones de las campañas de marketing y manejar los deep links de estas campañas

Implementar el handler de Singular Links

El SingularLinkHandler proporciona un mecanismo de callback para obtener los parámetros de deep link, deep link diferido y passthrough de los tracking links de Singular cuando se abre la aplicación.

Parámetros disponibles:

  • Deep Link: La URL de destino dentro de tu aplicación para los usuarios que hacen clic en el link
  • Deferred Deep Link: La URL de destino para los usuarios que instalan la aplicación después de hacer clic en el link
  • Passthrough: Datos personalizados pasados a través del tracking link para contexto adicional
  • URL Parameters: Todos los parámetros de consulta de la URL del tracking link

Configuración del SDK

Agregar SingularLinkHandler a Config

Configura el SingularLinkHandler durante la inicialización del SDK para procesar los datos entrantes de deep link y deep link diferido.

Swift Objective-C
func getConfig() -> SingularConfig? {
    // Create config with API credentials
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }
    
    // Set deep link handler
    config.singularLinksHandler = { params in
        self.handleDeeplink(params: params)
    }
    
    return config
}

func handleDeeplink(params: SingularLinkParams?) {
    // Get Deeplink data from Singular Link
    let deeplink = params?.getDeepLink()
    let passthrough = params?.getPassthrough()
    let isDeferred = params?.isDeferred()
    let urlParams = params?.getUrlParameters()
    
    print("Deeplink: \(deeplink ?? "null")")
    print("Passthrough: \(passthrough ?? "null")")
    print("Is Deferred: \(isDeferred ?? false)")
    
    // Handle deep link routing
    if let url = deeplink {
        handleDeepLinkRouting(url: url, isDeferred: isDeferred ?? false)
    }
}

Nota: El SingularLinkHandler se activa únicamente cuando la aplicación se abre a través de un Singular Link. Para más información, consulta Singular Links FAQ .


Comportamiento del handler

El SingularLinkHandler se comporta de manera diferente según si la aplicación se acaba de instalar o ya está instalada.

Instalación nueva (deep link diferido)

En una instalación nueva, no existe ninguna Open URL cuando se inicia la aplicación. Singular completa la atribución para determinar si el tracking link contenía un valor de deep link o deep link diferido.

Flujo de deep link diferido:

  1. El usuario hace clic en un tracking link de Singular configurado con un valor de deep link
  2. El usuario instala y abre la aplicación por primera vez
  3. El SDK de Singular envía la primera sesión a los servidores de Singular
  4. La atribución se completa e identifica el deep link del tracking link
  5. El valor del deep link regresa al SingularLinkHandler con isDeferred = true

Pruebas de deep links diferidos:

  1. Desinstala la aplicación del dispositivo de prueba (si actualmente está instalada)
  2. Restablece tu IDFA en el dispositivo (Settings > Privacy > Apple Advertising > Reset Advertising Identifier)
  3. Haz clic en el tracking link de Singular desde el dispositivo (asegúrate de que esté configurado con un valor de deep link)
  4. Instala y abre la aplicación

La atribución debería completarse correctamente, y el valor del deep link diferido se pasará al SingularLinkHandler.

Consejo profesional: Al probar deep links con una compilación de desarrollo que usa un identificador de bundle diferente (por ejemplo, com.example.dev en lugar de com.example.prod ), configura el tracking link específicamente para el identificador de bundle de la aplicación de desarrollo. Después de hacer clic en el link de prueba, instala la compilación de desarrollo directamente en el dispositivo a través de Xcode o TestFlight, en lugar de descargar la aplicación de producción desde la App Store.


Ya instalada (deep link inmediato)

Cuando la aplicación ya está instalada, al hacer clic en un Singular Link la aplicación se abre inmediatamente usando la tecnología iOS Universal Links.

Flujo de deep link inmediato:

  1. El usuario hace clic en un tracking link de Singular
  2. iOS proporciona una Open URL que contiene el tracking link completo de Singular
  3. Durante la inicialización del SDK, Singular analiza el NSUserActivity o la URL
  4. Singular extrae los valores de deep link y passthrough
  5. Los valores regresan a través del SingularLinkHandler con isDeferred = false

Parámetros de Passthrough

Captura datos adicionales del clic en el tracking link usando parámetros passthrough.

Si se incluye un parámetro passthrough en el tracking link, el parámetro passthrough del SingularLinkHandler contiene los datos correspondientes. Úsalo para capturar metadatos de la campaña, datos de segmentación de usuarios o cualquier información personalizada que necesites en la aplicación.

Swift Objective-C
func handleDeeplink(params: SingularLinkParams?) {
    // Extract passthrough data
    if let passthroughData = params?.getPassthrough() {
        // Parse JSON passthrough data
        if let data = passthroughData.data(using: .utf8),
           let jsonData = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
            
            let campaignId = jsonData["campaign_id"] as? String
            let userSegment = jsonData["segment"] as? String
            
            print("Campaign ID: \(campaignId ?? "unknown")")
            print("User Segment: \(userSegment ?? "unknown")")
        }
    }
}

Parámetros de URL

Captura todos los parámetros de consulta de la URL del tracking link usando el método getUrlParameters() .

El SingularLinkHandler proporciona acceso a todos los parámetros de URL del tracking link, dándote acceso completo a los parámetros personalizados y a las etiquetas UTM.

Swift Objective-C
func handleDeeplink(params: SingularLinkParams?) {
    // Get all URL parameters
    if let urlParams = params?.getUrlParameters() {
        for (key, value) in urlParams {
            print("Parameter: \(key) = \(value)")
        }
        
        // Access specific parameters
        if let utmSource = urlParams["utm_source"] as? String {
            print("UTM Source: \(utmSource)")
        }
        
        if let promoCode = urlParams["promo"] as? String {
            print("Promo Code: \(promoCode)")
        }
    }
}

Ejemplo de tracking link:
https://yourapp.sng.link/A1b2c/abc123?_dl=myapp://product/123&utm_source=facebook&promo=SALE2024

El SingularLinkHandler proporcionará acceso a todos los parámetros, incluidos utm_source y promo a través del método getUrlParameters() .


Configuración avanzada

Admite Universal Links de socios externos como Google Ads y Facebook para el seguimiento de atribución.

Para las versiones 12.0.3 y superiores del SDK de iOS de Singular, los Universal Links no Singular están soportados de forma predeterminada.

Función obsoleta: La propiedad supportedDomains y las sobrecargas startSession:...andSupportedDomains: están anotadas como __attribute__((deprecated)) en el SDK actual. El siguiente bloque se muestra solo para versiones heredadas del SDK (inferiores a 12.0.3); actualiza el SDK en lugar de seguir configurando supportedDomains en código nuevo.

Para admitir deep links de terceros en versiones antiguas del SDK:

  • Agrega todos los dominios asociados (excluyendo sng.link ) a la opción de configuración supportedDomains en el objeto Config cada vez que se inicializa el SDK de Singular
  • Esto permite el comportamiento de deep links de terceros, pero no permite la atribución al deep link. Para la atribución, todavía tienes que usar tracking links de Singular
  • supportedDomains asume que has configurado tu aplicación para Universal Links y que actualmente alojas tu propio archivo AASA en tu dominio
Swift Objective-C
func getConfig() -> SingularConfig? {
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }
    
    // Add supported domains for third-party Universal Links
    config.supportedDomains = [
        "subdomain.mywebsite.com",
        "anothersubdomain.myotherwebsite.com"
    ]
    
    return config
}

Habilita Universal Links servidos por proveedores de servicios de correo electrónico (ESP) para la atribución de campañas de correo electrónico.

El dominio del ESP debe estar habilitado para HTTPS. Apple requiere que las aplicaciones iOS obtengan los archivos apple-app-site-association desde un endpoint habilitado para HTTPS sin redireccionamientos. Verifica con tu ESP cómo aloja este archivo para tu aplicación, ya que puede requerir configuración de DNS en el DNS de tu sitio.

Para admitir un dominio de ESP, agrega el dominio de tracking personalizado a la opción de configuración espDomains en el objeto config cada vez que se inicializa el SDK de Singular.

Swift Objective-C
func getConfig() -> SingularConfig? {
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }
    
    // Add ESP domains for email campaign tracking
    config.espDomains = ["links.mywebsite.com"]
    
    return config
}