SDK do iOS - Configurando propriedades globais

Configurando propriedades globais

Defina propriedades personalizadas que se anexam automaticamente a todas as sessões e eventos enviados de seu app, permitindo uma segmentação detalhada de dados nos relatórios.

As propriedades globais permitem que você faça o rastreamento de qualquer usuário, modo de app ou informação contextual de que precise. Por exemplo, em um app de jogos, crie uma propriedade "Level" inicializada em "0" que é atualizada conforme os usuários avançam. Todas as sessões e eventos incluem essa propriedade, permitindo que você analise sessões, contagens de eventos e receita detalhados por nível de usuário.

Especificações de propriedades

Limites e persistência

Entenda as restrições e o comportamento de persistência das propriedades globais.

  • Máximo de propriedades: Defina até 5 propriedades globais por instalação de app
  • Persistência: As propriedades persistem entre os lançamentos do app com seus valores mais recentes até serem explicitamente removidas ou o app ser desinstalado
  • Limite de caracteres: Os nomes e valores das propriedades podem ter até 200 caracteres. Valores maiores são automaticamente truncados em 200 caracteres
  • Disponibilidade dos dados: As propriedades globais estão acessíveis em exports a nível de usuário e postbacks. Entre em contato com seu gerente de sucesso do cliente da Singular para atualizações sobre o suporte a relatórios agregados

Configurando propriedades globais na inicialização

Configurar via SingularConfig

Defina propriedades globais durante a inicialização do SDK usando o método setGlobalProperty antes de chamar Singular.start() .

Como as propriedades globais persistem entre os lançamentos do app, propriedades podem já existir com valores diferentes. Use o parâmetro overrideExisting para controlar se o novo valor deve substituir os valores existentes.

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 global properties during initialization
    config.setGlobalProperty("MyProperty", withValue: "MyValue", overrideExisting: true)
    config.setGlobalProperty("AnotherProperty", withValue: "AnotherValue", overrideExisting: true)

    return config
}

// Initialize SDK with config
if let config = getConfig() {
    Singular.start(config)
}

Assinatura do método:

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

Parâmetros:

  • key: Nome da propriedade (máximo 200 caracteres)
  • value: Valor da propriedade (máximo 200 caracteres)
  • overrideExisting: Se deve substituir uma propriedade existente com a mesma chave

Gerenciando propriedades após a inicialização

Definir propriedade global

Adicione ou atualize uma propriedade global em qualquer momento durante a execução do app.

Swift Objective-C
// Set a global property after initialization
let result = Singular.setGlobalProperty("MyProperty",
    andValue: "MyValue",
    overrideExisting: true)

if result {
    print("Property set successfully")
} else {
    print("Failed to set property")
}

Assinatura do método:

+ (BOOL)setGlobalProperty:(NSString *)key andValue:(NSString *)value overrideExisting:(BOOL)overrideExisting;

Retorna: true se a propriedade foi definida com sucesso, false caso contrário

Importante — em tempo de execução +setGlobalProperty:andValue:overrideExisting: retorna NO quando:

  • A key é nil ou está vazia
  • O SDK ainda não foi iniciado (+start: não foi executado)
  • Já existem 5 propriedades e você tenta adicionar uma nova
  • Uma propriedade com a mesma chave já existe e overrideExisting é NO — o valor não é substituído

Sempre verifique o valor de retorno antes de assumir que a propriedade foi armazenada.

Comportamento em tempo de configuração vs em tempo de execução: O método de instância em tempo de configuração -setGlobalProperty:withValue:overrideExisting: em SingularConfig retorna void — silenciosamente não faz nada se o limite de 5 propriedades for atingido ou a chave estiver vazia. O método de classe em tempo de execução em Singular retorna BOOL e expõe a falha. Prefira definir propriedades em tempo de configuração quando possível; use o método em tempo de execução quando precisar de feedback de falha.


Obter propriedades globais

Recupere todas as propriedades globais atualmente definidas e seus valores como um Dictionary.

Swift Objective-C
// Retrieve all global properties
let properties = Singular.getGlobalProperties()

// Iterate through properties
if let properties = properties as? [String: String] {
    for (key, value) in properties {
        print("Property: \(key) = \(value)")
    }
}

Assinatura do método:

+ (NSDictionary *)getGlobalProperties;

Retorna: Um Dictionary contendo todos os pares chave-valor das propriedades globais


Remover propriedade global

Remova uma propriedade global específica por sua chave.

Swift Objective-C
// Remove a specific global property
Singular.unsetGlobalProperty("MyProperty")

Assinatura do método:

+ (void)unsetGlobalProperty:(NSString *)key;

Parâmetros:

  • key: O nome da propriedade a ser removida

Limpar todas as propriedades globais

Remova todas as propriedades globais de uma só vez.

Swift Objective-C
// Remove all global properties
Singular.clearGlobalProperties()

Assinatura do método:

+ (void)clearGlobalProperties;

Melhor prática: Use clearGlobalProperties() quando um usuário fizer logout ou quando você precisar redefinir todas as propriedades de rastreamento personalizadas ao seu estado padrão.


Exemplo de implementação

Padrão de uso completo

Faça o rastreamento de propriedades a nível de app e específicas do usuário ao longo de todo o ciclo de vida da aplicação.

Swift Objective-C
// Initialize SDK with app-level global properties
func getConfig() -> SingularConfig? {
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }

    // Set app version as a global property
    if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
        config.setGlobalProperty("app_version", withValue: appVersion, overrideExisting: true)
    }

    return config
}

// Set third-party identifier on login
func onUserLogin(thirdPartyUserId: String) {
    let success = Singular.setGlobalProperty("third_party_identifier",
        andValue: thirdPartyUserId,
        overrideExisting: true)

    if success {
        print("Third-party identifier set")
    }
}

// Clear third-party identifier on logout
func onUserLogout() {
    Singular.unsetGlobalProperty("third_party_identifier")
    print("Third-party identifier cleared")
}

Melhor prática: Sincronize os identificadores de analytics de terceiros (por exemplo, Mixpanel distinct_id, Amplitude user_id) com as propriedades globais da Singular para um rastreamento unificado entre plataformas. Defina identificadores específicos do usuário no login e limpe-os com unsetGlobalProperty() no logout. Propriedades a nível de app como app_version persistem entre sessões.