SDK de iOS - Configurar propiedades globales

Configurar propiedades globales

Define propiedades personalizadas que se adjuntan automáticamente a cada sesión y evento enviado desde tu app, permitiendo una segmentación detallada de datos en los reportes.

Las propiedades globales te permiten hacer tracking de cualquier información de usuario, modo de app o información contextual que necesites. Por ejemplo, en una app de juegos, crea una propiedad "Level" inicializada en "0" que se actualice a medida que los usuarios progresan. Todas las sesiones y eventos incluyen esta propiedad, lo que te permite analizar sesiones, conteos de eventos e ingresos desglosados por nivel de usuario.

Especificaciones de las propiedades

Límites y persistencia

Comprende las restricciones y el comportamiento de persistencia de las propiedades globales.

  • Propiedades máximas: Define hasta 5 propiedades globales por instalación de app
  • Persistencia: Las propiedades persisten entre lanzamientos de la app con sus valores más recientes hasta que se desactiven explícitamente o se desinstale la app
  • Límite de caracteres: Los nombres y valores de las propiedades pueden tener hasta 200 caracteres de longitud. Los valores más largos se truncan automáticamente a 200 caracteres
  • Disponibilidad de datos: Las propiedades globales están disponibles en exports a nivel de usuario y postbacks. Contacta a tu gerente de éxito del cliente de Singular para obtener actualizaciones sobre el soporte de reportes agregados

Configurar propiedades globales durante la inicialización

Configurar mediante SingularConfig

Define propiedades globales durante la inicialización del SDK utilizando el método setGlobalProperty antes de llamar a Singular.start() .

Dado que las propiedades globales persisten entre lanzamientos de la app, las propiedades pueden existir con valores diferentes. Usa el parámetro overrideExisting para controlar si el nuevo valor debe sobrescribir los 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)
}

Firma del método:

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

Parámetros:

  • key: Nombre de la propiedad (máximo 200 caracteres)
  • value: Valor de la propiedad (máximo 200 caracteres)
  • overrideExisting: Si se debe sobrescribir una propiedad existente con la misma clave

Administrar propiedades después de la inicialización

Configurar propiedad global

Agrega o actualiza una propiedad global en cualquier momento durante el tiempo de ejecución de la 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")
}

Firma del método:

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

Retorna: true si la propiedad se configuró correctamente, false de lo contrario

Importante — en tiempo de ejecución +setGlobalProperty:andValue:overrideExisting: retorna NO cuando:

  • La key es nil o está vacía
  • El SDK aún no se ha iniciado (+start: no ha sido ejecutado)
  • Ya existen 5 propiedades e intentas agregar una nueva
  • Una propiedad con la misma clave ya existe y overrideExisting es NO — el valor no se reemplaza

Siempre verifica el valor de retorno antes de asumir que la propiedad se almacenó.

Comportamiento en tiempo de configuración vs tiempo de ejecución: El método de instancia en tiempo de configuración -setGlobalProperty:withValue:overrideExisting: en SingularConfig retorna void — silenciosamente no hace nada si se alcanza el límite de 5 propiedades o la clave está vacía. El método de clase en tiempo de ejecución en Singular retorna BOOL y expone el fallo. Prefiere configurar las propiedades en el momento de la configuración cuando sea posible; usa el método de tiempo de ejecución cuando necesites retroalimentación de fallo.


Obtener propiedades globales

Recupera todas las propiedades globales actualmente configuradas y sus valores como un 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)")
    }
}

Firma del método:

+ (NSDictionary *)getGlobalProperties;

Retorna: Un Dictionary que contiene todos los pares clave-valor de las propiedades globales


Desactivar propiedad global

Elimina una propiedad global específica por su clave.

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

Firma del método:

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

Parámetros:

  • key: El nombre de la propiedad a eliminar

Limpiar todas las propiedades globales

Elimina todas las propiedades globales a la vez.

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

Firma del método:

+ (void)clearGlobalProperties;

Mejor práctica: Usa clearGlobalProperties() cuando un usuario cierre sesión o cuando necesites restablecer todas las propiedades de tracking personalizadas a su estado predeterminado.


Ejemplo de implementación

Patrón de uso completo

Haz tracking de propiedades a nivel de app y específicas del usuario durante todo el ciclo de vida de la aplicación.

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")
}

Mejor práctica: Sincroniza los identificadores de analítica de terceros (p. ej., Mixpanel distinct_id, Amplitude user_id) con las propiedades globales de Singular para un tracking unificado entre plataformas. Configura los identificadores específicos del usuario al iniciar sesión y límpialos con unsetGlobalProperty() al cerrar sesión. Las propiedades a nivel de app como app_version persisten entre sesiones.