SDK do iOS - Referência de métodos de configuração

SDK do iOS - Referência de métodos de configuração

Este documento fornece uma referência abrangente para todas as opções de configuração disponíveis no SDK da Singular para aplicativos iOS. O objeto SingularConfig permite personalizar o comportamento do SDK, incluindo configurações de rastreamento, opções de atribuição, controles de privacidade e mais. Cada propriedade de configuração é apresentada com uma descrição, assinatura e exemplos práticos de uso.

appGroupName

Propriedade SingularConfig.appGroupName

Define o nome do grupo de aplicativos para compartilhar dados entre o aplicativo principal e as extensões de aplicativo. Isso é necessário ao usar extensões de aplicativo com o SDK.

Assinatura

@property (strong) NSString *appGroupName;

Exemplo de uso

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

brandedDomains

Propriedade SingularConfig.brandedDomains

Define domínios de marca para atribuição web-para-app. Isso permite especificar domínios personalizados que devem ser rastreados para fins de atribuição.

Definir esta propriedade substitui quaisquer domínios de marca configurados anteriormente. Passe a lista completa em uma única atribuição em vez de adicionar.

Assinatura

@property (strong) NSArray *brandedDomains;

Exemplo de uso

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

clipboardAttribution

Recurso Enterprise: O DDL baseado em área de transferência requer o WebSDK da Singular, que é um Recurso Enterprise. Entre em contato com seu Customer Success Manager para habilitar este recurso para sua conta.

Propriedade SingularConfig.clipboardAttribution

Habilita a atribuição por área de transferência para o SDK. Quando habilitada, o SDK verificará a área de transferência do dispositivo em busca de links de atribuição durante a inicialização. O valor padrão é NO .

Assinatura

@property (assign) BOOL clipboardAttribution;

Exemplo de uso

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

conversionValueUpdatedCallback

Propriedade SingularConfig.conversionValueUpdatedCallback

Define uma função de callback a ser chamada quando o valor de conversão do SKAdNetwork for atualizado. Isso permite que você reaja às mudanças no valor de conversão.

Assinatura

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

Exemplo 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

Propriedade SingularConfig.conversionValuesUpdatedCallback

Define uma função de callback a ser chamada quando os valores de conversão do SKAdNetwork 4.0 forem atualizados. Isso é específico para iOS 16.1+ e permite que você reaja a mudanças nos valores fine, coarse e lock.

Assinatura

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

Exemplo 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

Propriedade SingularConfig.customSdid

Recurso Enterprise: Define um SDID (Singular Device ID) personalizado. Isso permite fornecer seu próprio identificador de dispositivo em vez de usar o gerado pela Singular.

Assinatura

@property (strong) NSString *customSdid;

Exemplo de uso

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

deviceAttributionCallback

Propriedade SingularConfig.deviceAttributionCallback

Recurso BETA: Define uma função de callback a ser invocada quando os dados de atribuição do dispositivo estiverem disponíveis na resposta de /start . O callback é despachado em uma fila em segundo plano, portanto despache qualquer trabalho de UI para a thread principal.

Chave Tipo Notas
network NSString Fonte de atribuição. "organic" para instalações não atribuídas.
campaign_id NSString Presente apenas quando atribuído.
campaign_name NSString Presente apenas quando atribuído.
click_timestamp NSNumber (epoch microseconds) Presente apenas quando atribuído. Divida por 1.000.000 para obter segundos.

O callback só é invocado quando a resposta de /start contém um objeto attribution_info . Para instalações orgânicas, apenas network é preenchido.

Assinatura

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

Exemplo 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

Propriedade SingularConfig.didSetSdidHandler

Recurso Enterprise: Define uma função de callback a ser chamada quando o SDID (Singular Device ID) for definido após você atribuir um via customSdid. O argumento result é a string do SDID que acabou de ser armazenada.

Normalmente usado em conjunto com sdidReceivedHandler. Configure ambos ao gerenciar um SDID personalizado para que você seja notificado tanto quando o SDK aceita um novo SDID quanto quando o SDK exibe um já existente.

Assinatura

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

Exemplo 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

Propriedade SingularConfig.enableLogging

Habilita o registro (logging) do SDK. Útil para depuração e solução de problemas durante o desenvolvimento. Recomenda-se desabilitar o logging em builds de produção. O valor padrão é NO .

O logging permanece silencioso até que enableLogging seja definido como YES e logLevel seja definido como um valor acima de SingularLogLevelNone .

Assinatura

@property (assign) BOOL enableLogging;

Exemplo de uso

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

enableOdmWithTimeoutInterval

Propriedade SingularConfig.enableOdmWithTimeoutInterval

Define o intervalo de timeout em segundos para a obtenção do Google ODM (On-Device Measurement). O ODM é o sistema de medição de anúncios móveis do Google que expõe dados de atribuição de instalação no dispositivo. O valor padrão é 0 (obtenção de ODM desabilitada).

Assinatura

@property (assign) NSInteger enableOdmWithTimeoutInterval;

Exemplo de uso

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

espDomains

Propriedade SingularConfig.espDomains

Define os domínios de ESP (Email Service Provider) para atribuição por e-mail. Isso permite especificar quais domínios de e-mail devem ser considerados para atribuição.

Assinatura

@property (strong) NSArray *espDomains;

Exemplo de uso

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

globalProperties

Propriedade SingularConfig.globalProperties

Fornece acesso somente leitura ao dicionário de propriedades globais. Isso contém todas as propriedades globais que foram definidas para a configuração.

Assinatura

@property (readonly) NSMutableDictionary *globalProperties;

Exemplo de uso

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

initWithApiKey

Inicialização do SingularConfig

Inicializa um novo objeto SingularConfig com sua API key e secret. Este é o primeiro passo na configuração do SDK da Singular.

Assinatura

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

Exemplo de uso

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

launchOptions

Propriedade SingularConfig.launchOptions

Define o dicionário de launch options do app delegate. Isso é usado para processar deep links e outros dados de inicialização.

Assinatura

@property (strong) NSDictionary *launchOptions;

Exemplo 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

Propriedade SingularConfig.limitAdvertisingIdentifiers

Habilita ou desabilita o uso de identificadores de publicidade. Esta opção afeta como o SDK coleta e usa identificadores de dispositivo para rastreamento e atribuição. O valor padrão é NO .

Esta propriedade é excluída da compilação do Singular Kids SDK (protegida por #ifndef SINGULAR_KIDS). Se você estiver integrando o Singular-Kids-SDK, esta propriedade não está disponível — o Kids SDK aplica automaticamente um tratamento de identificadores mais rigoroso.

Assinatura

@property (assign) BOOL limitAdvertisingIdentifiers;

Exemplo de uso

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

logLevel

Propriedade SingularConfig.logLevel

Define a verbosidade do logging do SDK. O logging também deve estar habilitado via enableLogging para que qualquer saída seja emitida. O valor padrão é SingularLogLevelNone (sem logging).

Níveis disponíveis (de SingularLogLevel.h):

  • SingularLogLevelNone (0) — Sem logging
  • SingularLogLevelError (1) — Apenas erros
  • SingularLogLevelWarning (2) — Erros e avisos
  • SingularLogLevelInfo (3) — Erros, avisos e informações
  • SingularLogLevelDebug (4) — Todos os logs incluindo depuração
  • SingularLogLevelVerbose (5) — O mais detalhado

Assinatura

@property (assign) SingularLogLevel logLevel;

Exemplo de uso

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

manualSkanConversionManagement

Propriedade SingularConfig.manualSkanConversionManagement

Habilita o gerenciamento manual dos valores de conversão do SKAdNetwork. Quando habilitado, o SDK não atualizará automaticamente os valores de conversão, permitindo que você os controle manualmente.

Assinatura

@property (assign) BOOL manualSkanConversionManagement;

Exemplo de uso

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

openUrl

Propriedade SingularConfig.openUrl

Define a URL usada para abrir o aplicativo. Isso é usado para deep links de esquemas de URL personalizados.

Assinatura

@property (strong) NSURL *openUrl;

Exemplo 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

Propriedade SingularConfig.pushNotificationLinkPath

Define os caminhos para procurar deep links em payloads de notificações push. Isso ajuda o SDK a encontrar e processar links de atribuição em notificações push.

Assinatura

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

Exemplo de uso

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

pushNotificationPayload

Propriedade SingularConfig.pushNotificationPayload

Define o payload da notificação push para atribuição. Isso permite que o SDK processe dados de notificações push durante a inicialização.

Assinatura

@property (strong) NSDictionary *pushNotificationPayload;

Exemplo de uso

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

sdidReceivedHandler

Propriedade SingularConfig.sdidReceivedHandler

Recurso Enterprise: Define uma função de callback a ser chamada quando o SDID (Singular Device ID) ficar disponível — incluindo SDIDs que foram armazenados anteriormente. O argumento result é a string do SDID.

Normalmente usado em conjunto com didSetSdidHandler. Configure ambos ao gerenciar um SDID personalizado para que você seja notificado tanto quando o SDK aceita um novo SDID quanto quando o SDK exibe um já existente.

Assinatura

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

Exemplo 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

Define uma propriedade global durante a inicialização do SDK. Esta propriedade será enviada com todos os eventos rastreados pelo SDK. Este é um método em vez de uma propriedade, permitindo configuração encadeada.

Assinatura

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

Exemplo 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

Propriedade SingularConfig.shortLinkResolveTimeOut

Define o timeout em segundos para resolver short links. Isso determina quanto tempo o SDK esperará para que um short link seja resolvido antes de continuar com a inicialização. O valor padrão é 10 segundos.

Assinatura

@property (assign) long shortLinkResolveTimeOut;

Exemplo de uso

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

singularLinksHandler

Propriedade SingularConfig.singularLinksHandler

Define uma função de callback para manipular deep links processados pela Singular. Isso permite que seu aplicativo responda aos deep links usados na atribuição.

Assinatura

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

Exemplo 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

Propriedade SingularConfig.skAdNetworkEnabled

Habilita ou desabilita o suporte ao SKAdNetwork. Isso controla se o SDK usará o SKAdNetwork da Apple para atribuição. O valor padrão é YES.

Assinatura

@property (assign) BOOL skAdNetworkEnabled;

Exemplo de uso

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

supportAppExtension

Propriedade SingularConfig.supportAppExtension

Habilita o suporte a extensões de aplicativo. Quando habilitada, o SDK pode funcionar corretamente em contextos de extensão de aplicativo.

Assinatura

@property (assign) BOOL supportAppExtension;

Exemplo de uso

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

userActivity

Propriedade SingularConfig.userActivity

Define o objeto user activity para manipular universal links. Isso é usado quando o aplicativo é aberto via um universal link.

Assinatura

@property (strong) NSUserActivity *userActivity;

Exemplo 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

Propriedade SingularConfig.waitForTrackingAuthorizationWithTimeoutInterval

Define o intervalo de timeout em segundos para aguardar a resposta de autorização de rastreamento do usuário no iOS 14+. Isso determina por quanto tempo o SDK aguardará a resposta do prompt do AppTrackingTransparency antes de continuar com a inicialização. O valor padrão é 0 , o que significa que o SDK não aguarda e continua imediatamente.

Assinatura

@property (assign) NSInteger waitForTrackingAuthorizationWithTimeoutInterval;

Exemplo de uso

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

Exemplo completo de configuração

Configuração abrangente do SDK

O exemplo a seguir demonstra como criar uma configuração abrangente definindo várias propriedades de configuração juntas.

Exemplo 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)