SDK de Android - Referencia de métodos de configuración

SDK de Android - Referencia de configuración

Este documento ofrece una referencia integral de todas las opciones de configuración disponibles en el Singular SDK para aplicaciones Android. El objeto SingularConfig le permite personalizar el comportamiento del SDK, incluidos los ajustes de tracking, las opciones de atribución, los controles de privacidad y más. Cada método de configuración se presenta con una descripción, una firma y ejemplos prácticos de uso.

Ejemplo completo de configuración

Configuración integral del SDK

El siguiente ejemplo muestra cómo crear una configuración integral encadenando varios métodos de configuración.

Ejemplo completo

Kotlin Java
// Create comprehensive configuration
val config = SingularConfig("SDK KEY", "YOUR_SECRET")
    // Basic options
    .withSessionTimeoutInSec(120)
    .withLoggingEnabled()
    .withLogLevel(Log.VERBOSE)

    // User identification
    .withCustomUserId("user_123456")

    // Global properties
    .withGlobalProperty("app_version", "1.2.3", true)
    .withGlobalProperty("user_type", "premium", true)

    // Deep links
    .withOpenURI(intent.data)
    .withSingularLink(intent, { params ->
        params.deeplink?.let { deeplink ->
            println("Deep link: $deeplink")
            handleDeepLink(deeplink)
        }
    }, 10)

    // Attribution callback
    .withSingularDeviceAttribution { attributionData ->
        println("Attribution: $attributionData")
    }

    // Push notifications
    .withFCMDeviceToken(fcmToken)

    // Privacy settings
    .withLimitDataSharing(false)

    // Email attribution
    .withESPDomains(listOf("mailchimp.com", "sendgrid.net"))

    // Facebook integration
    .withFacebookAppId("YOUR_FACEBOOK_APP_ID")

// Initialize the SDK
Singular.init(context, config)

Constructor

Constructor de SingularConfig

Inicializa un nuevo objeto SingularConfig con su clave API y su secreto. Este es el primer paso para configurar el Singular SDK.

Firma

public SingularConfig(String apiKey, String secret);

Ejemplo de uso

Kotlin Java
// Create configuration object
val config = SingularConfig("SDK KEY", "YOUR_SECRET")

withBrandedDomains

Método SingularConfig.withBrandedDomains

Define dominios de marca para la atribución de la web a la aplicación. Esto le permite especificar dominios personalizados que se deben trackear para fines de atribución.

Al llamar a este método se reemplazan los dominios de marca configurados previamente. Pase la lista completa en una sola llamada en lugar de encadenar varias llamadas.

Firma

public SingularConfig withBrandedDomains(List<String> brandedDomains);

Ejemplo de uso

Kotlin Java
// Set branded domains for web-to-app attribution
val brandedDomains = listOf("yourcompany.com", "go.yourcompany.com")
val config = SingularConfig("API_KEY", "SECRET")
    .withBrandedDomains(brandedDomains)

withCustomSdid

Método SingularConfig.withCustomSdid

Función Enterprise: Define un SDID (Singular Device ID) personalizado. Esto le permite proporcionar su propio identificador de dispositivo en lugar de usar el generado por Singular.

Firma

public SingularConfig withCustomSdid(String customSdid, SDIDAccessorHandler accessorHandler);

Ejemplo de uso

Kotlin Java
// Set custom SDID with callback
val config = SingularConfig("API_KEY", "SECRET")
    .withCustomSdid("custom-device-id-12345", object : SDIDAccessorHandler {
        override fun didSetSdid(result: String) {
            println("SDID was set: $result")
            // Perform any actions needed after SDID is set
        }

        override fun sdidReceived(result: String) {
            println("SDID received: $result")
            // Existing SDID returned by the SDK
        }
    })

withCustomUserId

Método SingularConfig.withCustomUserId

Establece un ID de usuario personalizado durante la inicialización del SDK. Esto le permite asociar los datos de Singular con su propio sistema de identificación de usuarios desde el inicio.

Firma

public SingularConfig withCustomUserId(String customUserId);

Ejemplo de uso

Kotlin Java
// Set custom user ID at initialization
val config = SingularConfig("API_KEY", "SECRET")
    .withCustomUserId("user_123456")

withESPDomains

Método SingularConfig.withESPDomains

Define los dominios ESP (proveedores de servicios de email) para la atribución por email. Esto le permite especificar qué dominios de email deben considerarse para la atribución.

Al llamar a este método se reemplazan los dominios ESP configurados previamente. Pase la lista completa en una sola llamada en lugar de encadenar varias llamadas.

Firma

public SingularConfig withESPDomains(List<String> espDomains);

Ejemplo de uso

Kotlin Java
// Set ESP domains for email attribution
val espDomains = listOf("mailchimp.com", "sendgrid.net", "campaign-monitor.com")
val config = SingularConfig("API_KEY", "SECRET")
    .withESPDomains(espDomains)

withFacebookAppId

Método SingularConfig.withFacebookAppId

Define el ID de la aplicación de Facebook para la integración de atribución con Facebook. Esto permite al SDK trackear la atribución de campañas de Facebook.

Firma

public SingularConfig withFacebookAppId(String facebookAppId);

Ejemplo de uso

Kotlin Java
// Set Facebook App ID
val config = SingularConfig("API_KEY", "SECRET")
    .withFacebookAppId("YOUR_FACEBOOK_APP_ID")

withFCMDeviceToken

Método SingularConfig.withFCMDeviceToken

Define el token de dispositivo FCM (Firebase Cloud Messaging) en la inicialización. Esto habilita el tracking de notificaciones push y la detección de desinstalaciones desde el inicio.

La llamada se ignora si el token es null o está vacío. Invoque este método solo cuando disponga de un token FCM válido.

Firma

public SingularConfig withFCMDeviceToken(String fcmDeviceToken);

Ejemplo de uso

Kotlin Java
// Set FCM token at initialization if available
val config = SingularConfig("API_KEY", "SECRET")
    .withFCMDeviceToken(fcmToken)

withGlobalProperty

Método SingularConfig.withGlobalProperty

Define una propiedad global durante la inicialización del SDK. Esta propiedad se enviará con todos los eventos trackeados por el SDK. Es un método de configuración que admite encadenamiento.

El SDK admite un máximo de 5 propiedades globales. Las llamadas adicionales por encima de este límite se ignoran sin emitir error.

Firma

public SingularConfig withGlobalProperty(String key, String value, boolean overrideExisting);

Ejemplo de uso

Kotlin Java
// Add global properties at initialization
val config = SingularConfig("API_KEY", "SECRET")
    .withGlobalProperty("app_version", "1.2.3", true)
    .withGlobalProperty("user_type", "free", true)

withIMEI

Método SingularConfig.withIMEI

Define el IMEI del dispositivo para tracking en la inicialización. Es útil en regiones donde el tracking por IMEI está permitido y se prefiere.

Firma

public SingularConfig withIMEI(String imei);

Ejemplo de uso

Kotlin Java
// Set device IMEI at initialization
val config = SingularConfig("API_KEY", "SECRET")
    .withIMEI("123456789012345")

withLimitAdvertisingIdentifiers

Método SingularConfig.withLimitAdvertisingIdentifiers

Habilita el modo de identificadores publicitarios limitados en aplicaciones con audiencia mixta. Esta opción afecta la forma en que el SDK recopila y utiliza los identificadores del dispositivo para tracking.

Firma

public SingularConfig withLimitAdvertisingIdentifiers();

Ejemplo de uso

Kotlin Java
// Enable limited identifiers mode
val config = SingularConfig("API_KEY", "SECRET")
    .withLimitAdvertisingIdentifiers()

withLimitDataSharing

Método SingularConfig.withLimitDataSharing

Establece el estado de limitación de uso compartido de datos en la inicialización. Utilice este método para limitar el uso compartido de datos según el consentimiento del usuario o los requisitos de privacidad.

Firma

public SingularConfig withLimitDataSharing(boolean shouldLimitDataSharing);

Ejemplo de uso

Kotlin Java
// Enable limited data sharing at initialization
val config = SingularConfig("API_KEY", "SECRET")
    .withLimitDataSharing(true)

withLogLevel

Método SingularConfig.withLogLevel

Define el nivel de log para los registros del SDK. Los niveles disponibles son:

  • NONE = -1

  • VERBOSE = Log.VERBOSE (constante de Android, valor numérico 2)

  • DEBUG = Log.DEBUG (3)

  • INFO = Log.INFO (4)

  • WARNING = Log.WARN (5)

  • ERROR = Log.ERROR (6)

El nivel de log por defecto es Log.ERROR. Para que se genere salida, también debe habilitar el logging mediante withLoggingEnabled().

Firma

public SingularConfig withLogLevel(int level);

Ejemplo de uso

Kotlin Java
import android.util.Log

// Set verbose logging for detailed debugging
val config = SingularConfig("API_KEY", "SECRET")
    .withLoggingEnabled()
    .withLogLevel(Log.VERBOSE)

withLoggingEnabled

Método SingularConfig.withLoggingEnabled

Habilita el logging del SDK. Es útil para depuración y resolución de problemas durante el desarrollo. Se recomienda deshabilitar el logging en builds de producción.

Firma

public SingularConfig withLoggingEnabled();

Ejemplo de uso

Kotlin Java
// Enable logging for debug builds
val config = SingularConfig("API_KEY", "SECRET")
    .withLoggingEnabled()

withOAIDCollection

Método SingularConfig.withOAIDCollection

Habilita la recopilación de OAID (Open Anonymous Device Identifier). Se utiliza principalmente para tracking en China, donde Google Play Services no está disponible.

Firma

public SingularConfig withOAIDCollection();

Ejemplo de uso

Kotlin Java
// Enable OAID collection for China
val config = SingularConfig("API_KEY", "SECRET")
    .withOAIDCollection()

withOpenURI

Método SingularConfig.withOpenURI

Define el URI que abrió la aplicación. Se utiliza para la atribución de deep links y debe configurarse cuando la aplicación se abre a través de un deep link.

Firma

public SingularConfig withOpenURI(Uri openUri);

Ejemplo de uso

Kotlin Java
// In your Activity's onCreate or onNewIntent
val uri = intent.data
val config = SingularConfig("API_KEY", "SECRET")
    .withOpenURI(uri)

withPushNotificationPayload

Método SingularConfig.withPushNotificationPayload

Define el payload de la notificación push para la atribución. Esto permite al SDK procesar los datos de la notificación push durante la inicialización.

Firma

public SingularConfig withPushNotificationPayload(Intent intent, String[] ... pushNotificationLinkPath);

Ejemplo de uso

Kotlin Java
// Set push notification payload with custom link paths
val config = SingularConfig("API_KEY", "SECRET")
    .withPushNotificationPayload(
        intent,
        arrayOf("data", "deeplink"),
        arrayOf("notification", "data", "url"),
        arrayOf("custom", "link")
    )

withSdidAccessorHandler

Método SingularConfig.withSdidAccessorHandler

Función Enterprise: Define una función de callback que se invoca cuando se recibe el SDID (Singular Device ID). Esto le permite acceder al SDID en cuanto esté disponible.

Firma

public SingularConfig withSdidAccessorHandler(SDIDAccessorHandler accessorHandler);

Ejemplo de uso

Kotlin Java
// Set callback for when SDID is received
val config = SingularConfig("API_KEY", "SECRET")
    .withSdidAccessorHandler(object : SDIDAccessorHandler {
        override fun didSetSdid(result: String) {
            println("SDID was set: $result")
        }

        override fun sdidReceived(result: String) {
            println("SDID received: $result")
            // Store or use the SDID as needed
            storeDeviceIdentifier(result)
        }
    })

withSessionTimeoutInSec

Método SingularConfig.withSessionTimeoutInSec

Define el tiempo de espera de la sesión en segundos. Determina cuánto dura la sesión de un usuario después de que la aplicación pasa a segundo plano. El valor por defecto es 60 segundos.

Firma

public SingularConfig withSessionTimeoutInSec(long timeout);

Ejemplo de uso

Kotlin Java
// Set session timeout to 2 minutes
val config = SingularConfig("API_KEY", "SECRET")
    .withSessionTimeoutInSec(120)

withSingularDeviceAttribution

Método SingularConfig.withSingularDeviceAttribution

Función BETA: Define una función de callback que se invoca cuando hay datos de atribución del dispositivo disponibles en la respuesta de /start . El callback se ejecuta en un hilo en segundo plano, por lo que debe despachar cualquier trabajo de UI al hilo principal.

Clave Tipo Notas
network String Fuente de atribución. "organic" para instalaciones no atribuidas.
campaign_id String Presente solo cuando hay atribución.
campaign_name String Presente solo cuando hay atribución.
click_timestamp Long (microsegundos epoch) Presente solo cuando hay atribución. Divida entre 1.000.000 para obtener segundos.

El callback se invoca únicamente cuando la respuesta de /start contiene un objeto attribution_info . Para instalaciones orgánicas, solo se completa el campo network.

Firma

public SingularConfig withSingularDeviceAttribution(SingularDeviceAttributionHandler handler);

Ejemplo de uso

Kotlin Java
// Set device attribution callback
val config = SingularConfig("API_KEY", "SECRET")
      .withSingularDeviceAttribution { attributionData ->
          println("Attribution data received: $attributionData")

          val source         = attributionData["network"]        as? String
          val campaignName   = attributionData["campaign_name"]  as? String
          val campaignId     = attributionData["campaign_id"]    as? String
          val clickTimestamp = attributionData["click_timestamp"]?.toString()?.toLongOrNull()

          campaignName?.let { showCampaignSpecificContent(it) }
      }

withSingularLink

Métodos SingularConfig.withSingularLink

Configura Singular Links (deep links) para la atribución. Este método establece el handler que procesa los deep links y el tiempo de espera para la resolución de los enlaces cortos.

Cuando se omite el argumento shortlinkTimeoutSec, el SDK utiliza un valor predeterminado de 10 segundos. Si la acción del intent es ACTION_VIEW, el SDK también marca la sesión como abierta con un deep link.

Firmas

public SingularConfig withSingularLink(Intent intent, SingularLinkHandler handler);

public SingularConfig withSingularLink(Intent intent, SingularLinkHandler handler,
                                       long shortlinkTimeoutSec);

Ejemplo de uso

Kotlin Java
// Set Singular Links handler
val config = SingularConfig("API_KEY", "SECRET")
    .withSingularLink(intent, { params ->
        // Check if we have a deep link
        params.deeplink?.let { deeplink ->
            println("Deep link received: $deeplink")
            // Navigate based on the deep link
            navigateToScreen(deeplink)
        }

        // Check if this is a deferred deep link
        if (params.isDeferred) {
            println("This is a deferred deep link")
        }

        // Access passthrough parameters
        params.passthrough?.let { passthrough ->
            println("Passthrough data: $passthrough")
        }
    }, 10)