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

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

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

appGroupName

Propiedad SingularConfig.appGroupName

Establece el nombre del grupo de aplicaciones para compartir datos entre la aplicación principal y las extensiones de aplicación. Esto es obligatorio cuando se utilizan extensiones de aplicación con el SDK.

Firma

@property (strong) NSString *appGroupName;

Ejemplo de uso

Swift Objective-C
// Set app group name for app extensions
config.appGroupName = "group.com.yourcompany.yourapp"

brandedDomains

Propiedad SingularConfig.brandedDomains

Establece dominios de marca para atribución web-a-app. Esto le permite especificar dominios personalizados que deben rastrearse con fines de atribución.

Establecer esta propiedad reemplaza cualquier dominio de marca previamente configurado. Pase la lista completa en una sola asignación en lugar de agregar elementos.

Firma

@property (strong) NSArray *brandedDomains;

Ejemplo de uso

Swift Objective-C
// Set branded domains for web-to-app attribution
config.brandedDomains = ["yourcompany.com", "go.yourcompany.com"]

clipboardAttribution

Función Enterprise: El DDL basado en portapapeles requiere el WebSDK de Singular, que es una Función Enterprise. Comuníquese con su Customer Success Manager para habilitar esta función en su cuenta.

Propiedad SingularConfig.clipboardAttribution

Habilita la atribución por portapapeles para el SDK. Cuando está habilitada, el SDK verifica el portapapeles del dispositivo en busca de enlaces de atribución durante la inicialización. El valor predeterminado es NO .

Firma

@property (assign) BOOL clipboardAttribution;

Ejemplo de uso

Swift Objective-C
// Enable clipboard attribution
config.clipboardAttribution = true

conversionValueUpdatedCallback

Propiedad SingularConfig.conversionValueUpdatedCallback

Establece una función de callback que se llamará cuando se actualice el valor de conversión de SKAdNetwork. Esto le permite reaccionar a los cambios en el valor de conversión.

Firma

@property (copy) void(^conversionValueUpdatedCallback)(NSInteger);

Ejemplo de uso

Swift Objective-C
// Set conversion value updated callback
config.conversionValueUpdatedCallback = { conversionValue in
    print("Conversion value updated to: \(conversionValue)")
    // Update UI or take other actions based on the new conversion value
}

conversionValuesUpdatedCallback

Propiedad SingularConfig.conversionValuesUpdatedCallback

Establece una función de callback que se llamará cuando se actualicen los valores de conversión de SKAdNetwork 4.0. Esto es específico de iOS 16.1+ y le permite reaccionar a cambios en los valores fine, coarse y lock.

Firma

@property (copy) void(^conversionValuesUpdatedCallback)(NSNumber *, NSNumber *, BOOL);

Ejemplo de uso

Swift Objective-C
// Set conversion values updated callback for SKAdNetwork 4.0
config.conversionValuesUpdatedCallback = { fineValue, coarseValue, lock in
    print("Conversion values updated - Fine: \(fineValue ?? 0), Coarse: \(coarseValue ?? 0), Lock: \(lock)")
    // Update UI or take other actions based on the new conversion values
}

customSdid

Propiedad SingularConfig.customSdid

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

Firma

@property (strong) NSString *customSdid;

Ejemplo de uso

Swift Objective-C
// Set custom SDID
config.customSdid = "custom-device-id-12345"

deviceAttributionCallback

Propiedad SingularConfig.deviceAttributionCallback

Función BETA: Establece una función de callback que se invocará cuando los datos de atribución del dispositivo estén disponibles desde la respuesta de /start . El callback se despacha en una cola en segundo plano, por lo que debe despachar cualquier trabajo de UI al hilo principal.

Clave Tipo Notas
network NSString Fuente de atribución. "organic" para instalaciones no atribuidas.
campaign_id NSString Presente solo cuando hay atribución.
campaign_name NSString Presente solo cuando hay atribución.
click_timestamp NSNumber (epoch microseconds) Presente solo cuando hay atribución. Divida por 1.000.000 para obtener segundos.

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

Firma

@property (copy) void(^deviceAttributionCallback)(NSDictionary *);

Ejemplo de uso

Swift Objective-C
// Set device attribution callback
config.deviceAttributionCallback = { attributionData in
    guard let attributionData = attributionData else { return }
    print("Attribution data received: \(attributionData)")

    let network = attributionData["network"] as? String
    let campaignId = attributionData["campaign_id"] as? String
    let campaignName = attributionData["campaign_name"] as? String
    let clickTimestamp = attributionData["click_timestamp"] as? NSNumber

    // UI work must be dispatched to the main thread
    DispatchQueue.main.async {
        if let campaignName = campaignName {
            self.showCampaignSpecificContent(campaignName)
        }
    }
}

didSetSdidHandler

Propiedad SingularConfig.didSetSdidHandler

Función Enterprise: Establece una función de callback que se llamará cuando se establezca el SDID (Singular Device ID) después de que asigne uno a través de customSdid. El argumento result es la cadena de SDID que se acaba de almacenar.

Normalmente se usa junto con sdidReceivedHandler. Configure ambos al gestionar un SDID personalizado para que se le notifique tanto cuando el SDK acepte un nuevo SDID como cuando el SDK presente uno existente.

Firma

typedef void (^SdidAccessorHandler)(NSString *result);
@property (copy) SdidAccessorHandler didSetSdidHandler;

Ejemplo de uso

Swift Objective-C
// Set callback for when SDID is set
config.customSdid = "custom-device-id-12345"
config.didSetSdidHandler = { sdid in
    print("SDID was set: \(sdid)")
    // Perform any actions needed after SDID is set
}

enableLogging

Propiedad SingularConfig.enableLogging

Habilita el registro (logging) del SDK. Útil para depuración y solución de problemas durante el desarrollo. Se recomienda deshabilitar el registro en compilaciones de producción. El valor predeterminado es NO .

El registro permanecerá silencioso hasta que tanto enableLogging se establezca en YES como que logLevel se establezca en un valor superior a SingularLogLevelNone .

Firma

@property (assign) BOOL enableLogging;

Ejemplo de uso

Swift Objective-C
// Enable logging for debug builds
config.enableLogging = true
config.logLevel = .debug

enableOdmWithTimeoutInterval

Propiedad SingularConfig.enableOdmWithTimeoutInterval

Establece el intervalo de tiempo de espera en segundos para la obtención de Google ODM (On-Device Measurement). ODM es el sistema de medición de anuncios móviles de Google que presenta datos de atribución de instalación en el dispositivo. El valor predeterminado es 0 (obtención de ODM deshabilitada).

Firma

@property (assign) NSInteger enableOdmWithTimeoutInterval;

Ejemplo de uso

Swift Objective-C
// Enable Google ODM with 5 second timeout
config.enableOdmWithTimeoutInterval = 5

espDomains

Propiedad SingularConfig.espDomains

Establece los dominios de ESP (Email Service Provider) para atribución por correo electrónico. Esto le permite especificar qué dominios de correo electrónico deben considerarse para la atribución.

Firma

@property (strong) NSArray *espDomains;

Ejemplo de uso

Swift Objective-C
// Set ESP domains for email attribution
config.espDomains = ["mailchimp.com", "sendgrid.net", "campaign-monitor.com"]

globalProperties

Propiedad SingularConfig.globalProperties

Proporciona acceso de solo lectura al diccionario de propiedades globales. Esto contiene todas las propiedades globales que se han establecido para la configuración.

Firma

@property (readonly) NSMutableDictionary *globalProperties;

Ejemplo de uso

Swift Objective-C
// Access global properties
print("Global properties: \(config.globalProperties)")

initWithApiKey

Inicialización de SingularConfig

Inicializa un nuevo objeto SingularConfig con su API key y secret. Este es el primer paso para configurar el SDK de Singular.

Firma

- (id)initWithApiKey:(NSString *)apikey andSecret:(NSString *)secret;

Ejemplo de uso

Swift Objective-C
// Create configuration object
let config = SingularConfig(apiKey: "SDK KEY", andSecret: "YOUR_SECRET")

launchOptions

Propiedad SingularConfig.launchOptions

Establece el diccionario de launch options desde el app delegate. Se utiliza para procesar deep links y otros datos de inicio.

Firma

@property (strong) NSDictionary *launchOptions;

Ejemplo de uso

Swift Objective-C
// Set launch options from app delegate
func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let config = SingularConfig(apiKey: "API_KEY", andSecret: "SECRET")
    config.launchOptions = launchOptions
    Singular.start(config)
    return true
}

limitAdvertisingIdentifiers

Propiedad SingularConfig.limitAdvertisingIdentifiers

Habilita o deshabilita el uso de identificadores publicitarios. Esta opción afecta cómo el SDK recopila y utiliza identificadores de dispositivo para tracking y atribución. El valor predeterminado es NO .

Esta propiedad se excluye de la compilación del Singular Kids SDK (protegida por #ifndef SINGULAR_KIDS). Si está integrando Singular-Kids-SDK, esta propiedad no está disponible — el Kids SDK aplica automáticamente un manejo de identificadores más estricto.

Firma

@property (assign) BOOL limitAdvertisingIdentifiers;

Ejemplo de uso

Swift Objective-C
// Enable limited identifiers mode
config.limitAdvertisingIdentifiers = true

logLevel

Propiedad SingularConfig.logLevel

Establece el nivel de detalle del registro del SDK. El registro también debe estar habilitado mediante enableLogging para que se emita cualquier salida. El valor predeterminado es SingularLogLevelNone (sin registro).

Niveles disponibles (de SingularLogLevel.h):

  • SingularLogLevelNone (0) — Sin registro
  • SingularLogLevelError (1) — Solo errores
  • SingularLogLevelWarning (2) — Errores y advertencias
  • SingularLogLevelInfo (3) — Errores, advertencias e información
  • SingularLogLevelDebug (4) — Todos los registros incluyendo depuración
  • SingularLogLevelVerbose (5) — El más detallado

Firma

@property (assign) SingularLogLevel logLevel;

Ejemplo de uso

Swift Objective-C
// Set verbose logging for detailed debugging
config.enableLogging = true
config.logLevel = .verbose

manualSkanConversionManagement

Propiedad SingularConfig.manualSkanConversionManagement

Habilita la gestión manual de los valores de conversión de SKAdNetwork. Cuando está habilitada, el SDK no actualiza automáticamente los valores de conversión, permitiéndole controlarlos manualmente.

Firma

@property (assign) BOOL manualSkanConversionManagement;

Ejemplo de uso

Swift Objective-C
// Enable manual SKAdNetwork conversion management
config.manualSkanConversionManagement = true

openUrl

Propiedad SingularConfig.openUrl

Establece la URL utilizada para abrir la aplicación. Se utiliza para deep links de esquemas de URL personalizados.

Firma

@property (strong) NSURL *openUrl;

Ejemplo de uso

Swift Objective-C
// Set open URL for custom URL schemes
func application(_ app: UIApplication,
                 open url: URL,
                 options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    let config = SingularConfig(apiKey: "API_KEY", andSecret: "SECRET")
    config.openUrl = url
    Singular.start(config)
    return true
}

pushNotificationLinkPath

Propiedad SingularConfig.pushNotificationLinkPath

Establece las rutas en las que buscar deep links en los payloads de notificaciones push. Esto ayuda al SDK a encontrar y procesar enlaces de atribución en las notificaciones push.

Firma

@property (strong) NSArray<NSArray<NSString*>*> *pushNotificationLinkPath;

Ejemplo de uso

Swift Objective-C
// Set push notification link paths
config.pushNotificationLinkPath = [
    ["data", "deeplink"],
    ["notification", "data", "url"],
    ["custom", "link"]
]

pushNotificationPayload

Propiedad SingularConfig.pushNotificationPayload

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

Firma

@property (strong) NSDictionary *pushNotificationPayload;

Ejemplo de uso

Swift Objective-C
// Set push notification payload
config.pushNotificationPayload = userInfo

sdidReceivedHandler

Propiedad SingularConfig.sdidReceivedHandler

Función Enterprise: Establece una función de callback que se llamará cuando el SDID (Singular Device ID) esté disponible, incluyendo los SDIDs almacenados previamente. El argumento result es la cadena de SDID.

Normalmente se usa junto con didSetSdidHandler. Configure ambos al gestionar un SDID personalizado para que se le notifique tanto cuando el SDK acepte un nuevo SDID como cuando el SDK presente uno existente.

Firma

typedef void (^SdidAccessorHandler)(NSString *result);
@property (copy) SdidAccessorHandler sdidReceivedHandler;

Ejemplo de uso

Swift Objective-C
// Set callback for when SDID is received
config.sdidReceivedHandler = { sdid in
    print("SDID received: \(sdid)")
    // Store or use the SDID as needed
    self.storeDeviceIdentifier(sdid)
}

setGlobalProperty

Método SingularConfig.setGlobalProperty

Establece una propiedad global durante la inicialización del SDK. Esta propiedad se enviará con todos los eventos rastreados por el SDK. Este es un método en lugar de una propiedad, permitiendo configuración encadenada.

Firma

- (void)setGlobalProperty:(NSString *)key
                withValue:(NSString *)value
         overrideExisting:(BOOL)overrideExisiting;

Ejemplo de uso

Swift Objective-C
// Add global properties
config.setGlobalProperty("app_version",
                         withValue: "1.2.3",
                         overrideExisting: true)

config.setGlobalProperty("user_type",
                         withValue: "free",
                         overrideExisting: true)

shortLinkResolveTimeOut

Propiedad SingularConfig.shortLinkResolveTimeOut

Establece el tiempo de espera en segundos para resolver short links. Esto determina cuánto tiempo esperará el SDK para que se resuelva un short link antes de continuar con la inicialización. El valor predeterminado es 10 segundos.

Firma

@property (assign) long shortLinkResolveTimeOut;

Ejemplo de uso

Swift Objective-C
// Set short link resolve timeout to 15 seconds
config.shortLinkResolveTimeOut = 15

singularLinksHandler

Propiedad SingularConfig.singularLinksHandler

Establece una función de callback para manejar los deep links procesados por Singular. Esto permite que su aplicación responda a los deep links utilizados en la atribución.

Firma

@property (copy) void(^singularLinksHandler)(SingularLinkParams *);

Ejemplo de uso

Swift Objective-C
// Set singular links handler
config.singularLinksHandler = { params in
    guard let params = params else { return }

    // Check if we have a deep link
    if let deeplink = params.getDeepLink() {
        print("Deep link received: \(deeplink)")

        // Navigate based on the deep link
        self.navigateToScreen(deeplink)
    }

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

    // Access passthrough parameters
    if let passthrough = params.getPassthrough() {
        print("Passthrough data: \(passthrough)")
    }
}

skAdNetworkEnabled

Propiedad SingularConfig.skAdNetworkEnabled

Habilita o deshabilita el soporte de SKAdNetwork. Esto controla si el SDK utilizará SKAdNetwork de Apple para la atribución. El valor predeterminado es YES.

Firma

@property (assign) BOOL skAdNetworkEnabled;

Ejemplo de uso

Swift Objective-C
// Disable SKAdNetwork support if needed
config.skAdNetworkEnabled = false

supportAppExtension

Propiedad SingularConfig.supportAppExtension

Habilita el soporte para extensiones de aplicación. Cuando está habilitada, el SDK puede funcionar correctamente en contextos de extensión de aplicación.

Firma

@property (assign) BOOL supportAppExtension;

Ejemplo de uso

Swift Objective-C
// Enable app extension support
config.supportAppExtension = true

userActivity

Propiedad SingularConfig.userActivity

Establece el objeto user activity para manejar enlaces universales. Se utiliza cuando la aplicación se abre mediante un enlace universal.

Firma

@property (strong) NSUserActivity *userActivity;

Ejemplo de uso

Swift Objective-C
// Set user activity for universal links
func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    let config = SingularConfig(apiKey: "API_KEY", andSecret: "SECRET")
    config.userActivity = userActivity
    Singular.start(config)
    return true
}

waitForTrackingAuthorizationWithTimeoutInterval

Propiedad SingularConfig.waitForTrackingAuthorizationWithTimeoutInterval

Establece el intervalo de tiempo de espera en segundos para esperar la respuesta de autorización de tracking del usuario en iOS 14+. Esto determina cuánto tiempo esperará el SDK la respuesta del prompt de AppTrackingTransparency antes de continuar con la inicialización. El valor predeterminado es 0 , lo que significa que el SDK no espera y continúa inmediatamente.

Firma

@property (assign) NSInteger waitForTrackingAuthorizationWithTimeoutInterval;

Ejemplo de uso

Swift Objective-C
// Wait up to 60 seconds for ATT prompt response
config.waitForTrackingAuthorizationWithTimeoutInterval = 60

Ejemplo completo de configuración

Configuración integral del SDK

El siguiente ejemplo demuestra cómo crear una configuración integral estableciendo múltiples propiedades de configuración juntas.

Ejemplo completo

Swift Objective-C
// Create configuration with API credentials
let config = SingularConfig(apiKey: "SDK KEY", andSecret: "YOUR_SECRET")

// Set basic options
config.waitForTrackingAuthorizationWithTimeoutInterval = 60
config.clipboardAttribution = true

// Set global properties
config.setGlobalProperty("app_version",
                         withValue: "1.2.3",
                         overrideExisting: true)
config.setGlobalProperty("user_type",
                         withValue: "premium",
                         overrideExisting: true)

// Configure SKAdNetwork
config.skAdNetworkEnabled = true
config.manualSkanConversionManagement = false
config.conversionValueUpdatedCallback = { conversionValue in
    print("Conversion value updated: \(conversionValue)")
}

// Configure deep links
config.launchOptions = launchOptions
config.singularLinksHandler = { params in
    if let deeplink = params?.getDeepLink() {
        print("Deep link received: \(deeplink)")
        self.handleDeepLink(deeplink)
    }
}

// Configure attribution callback (fires on a background queue)
config.deviceAttributionCallback = { attributionData in
    print("Attribution data: \(attributionData ?? [:])")
}

// Start the SDK
Singular.start(config)