Integrar mediante modelos de lenguaje grande (IA): utiliza la siguiente indicación:
Añadir el SDK de Tenjin a mi proyecto utilizando: https://raw.githubusercontent.com/tenjin/sdk-llm-guides/main/guides/ios/llm-guide.md
Resumen #
El SDK de Tenjin para iOS permite a los usuarios realizar un seguimiento de los eventos y las instalaciones en sus aplicaciones de iOS. Para obtener más información sobre Tenjin y nuestra oferta de productos, visita https://www.tenjin.com.
- Consulta nuestras Notas de la versión para ver el historial detallado de versiones.
- Para obtener instrucciones específicas sobre Unity, visita https://github.com/tenjin/tenjin-unity-sdk.
- Si tienes alguna duda o necesitas ayuda, ponte en contacto con: support@tenjin.com
Notas: #
- Se requiere Xcode 13 si utilizas el SDK de iOS v1.12.17 o una versión posterior.
- Para AppTrackingTransparency, asegúrate de actualizar el archivo
.plistde tu proyecto y añadirDescripción del seguimiento de la privacidad - Descripción del uso de seguimiento(NSUserTrackingUsageDescription) junto con el mensaje de texto que quieras mostrar a los usuarios. Esta biblioteca solo está disponible en iOS 14.0+. - Para obtener Apple Search Ads Attribution, asegúrate de actualizar a la versión 1.12.6 o superior y de añadir la biblioteca
AdServices.framework. Esta biblioteca solo está disponible en iOS 14.3 o superior.
Integración del SDK #
Cocoapods #
Si utilizas pods, añade pod 'TenjinSDK' a tu Podfile, a continuación, ejecuta pod Install y pasa al paso 4.
Gestor de paquetes Swift #
Si utilizas SPM, añade el paquete SDK de Tenjin a través de Xcode utilizando este repositorio [aquí][43] y pasa directamente al paso 4.
- Descarga la última versión del SDK [aquí][21].
- Arrastra
TenjinSDK.xcframeworkyTenjinSDK.ha tu proyecto, en “Fases de compilación” -> «Enlazar binario con bibliotecas». - Incluye las opciones del enlazador
-ObjCen tus «Configuraciones de compilación»
Pasos para proyectos en Objective-C #
- Ve al archivo AppDelegate; por defecto,
AppDelegate.m, y#import "TenjinSDK.h". - Consigue tu
SDK_KEYen la página de tu aplicación. Nota:SDK_KEYes única para cada una de tus aplicaciones. Puedes crear hasta 3 claves para la misma aplicación.

- En tu método
didFinishLaunchingWithOptions, añade:
[TenjinSDK initialize:@" "];
[TenjinSDK connect];- Para habilitar los registros de depuración del SDK de Tenjin iOS, añade:
[TenjinSDK debugLogs];A continuación te mostramos un ejemplo de cómo debería quedar la integración en proyectos de Objective-C en tu archivo AppDelegate.m:
#import "TenjinSDK.h"
@implementation TJNAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TenjinSDK initialize:@"<SDK_KEY>"];
[TenjinSDK connect];
//All your other stuff
...
}Pasos para proyectos en Swift #
- Añade un archivo de encabezado puente de Objective-C para proyectos Swift. Si tu proyecto aún no tiene un encabezado puente, crea uno:
- Crear un archivo de cabecera
- Archivo -> Nuevo -> Archivo -> “Fuentes”
- Selecciona el archivo “Header” -> Haz clic en «Siguiente»
- El nombre del archivo de cabecera debe ser “NombreDeTuProyecto-Bridging-Header”. En “Targets” -> Selecciona el objetivo de la aplicación -> Haz clic en «Siguiente»
- En el archivo de cabecera: “YourProjectName-Bridging-Header.h”
- Añade lo siguiente:
#import "TenjinSDK.h" - Ve al destino de la aplicación y, en “Configuración de compilación”
- Ve a la sección “Compilador Swift – General”
- Ve a la subsección “Objective-C Bridging Header” y arrastra el archivo de cabecera —“YourProjectName-Bridging-Header.h”— al campo correspondiente.
- Añade lo siguiente:
- Crear un archivo de cabecera
- Consigue tu
SDK_KEYen la página de tu aplicación. Nota:SDK_KEYes única para cada una de tus aplicaciones. Puedes crear hasta 3 claves para la misma aplicación.

- a. En tu método
didFinishLaunchingWithOptions, añade:
TenjinSDK.getInstance(" ")
TenjinSDK.connect()Si utilizas Swift 5, utiliza el método getInstance() en lugar de init(). Consulta nuestra aplicación de ejemplo en Swift
- Para habilitar los registros de depuración del SDK de Tenjin iOS, añade:
TenjinSDK.debugLogs();A continuación te mostramos un ejemplo de cómo debería quedar la integración en proyectos de Swift en tu archivo AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
TenjinSDK.getInstance("<SDK_KEY>")
TenjinSDK.connect()
return true
}NOTA: Asegúrate de implementar este código en cada didFinishLaunchingWithOptions, no solo la primera vez que se abre la aplicación.
Inicialización alternativa para gestionar enlaces profundos procedentes de otros servicios. Si utilizas otros servicios para generar enlaces profundos diferidos, puedes pasar esos enlaces profundos a Tenjin para que gestione la lógica de atribución con tus enlaces profundos habilitados para Tenjin.
#import "TenjinSDK.h"
@implementation TJNAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TenjinSDK init:@"<SDK_KEY>"];
//get your deep link from your other 3rd party service
NSURL *url = [NSURL withString: @"your_deep_link"];
//if you have a deep link that's generated from a third party service then pass it to tenjin to handle the Attribution of deep links holistically
if(url) {
[TenjinSDK connectWithDeferredDeeplink:url];
}
else{
[TenjinSDK connect];
}
//All your other stuff
//...
}Puedes comprobar si la integración funciona a través de nuestra herramienta de datos de dispositivos de prueba en tiempo real. Añade tu advertising_id o IDFA/GAID a la lista de dispositivos de prueba. Encontrarás esta información en "Soporte" -\> Dispositivos de prueba. Ve a la página de la herramienta de eventos en tiempo real y envía los eventos de prueba desde tu aplicación. Deberías ver cómo llegan los eventos en tiempo real:
Inicialización de Tenjin con ATTrackingManager #
A partir de la versión iOS 14, tienes la opción de mostrar el mensaje inicial de permisos de ATTrackingManager y la selección para que los usuarios acepten o rechacen el seguimiento.
Si el dispositivo no acepta el permiso de seguimiento, el IDFA pasará a ser cero. Si el dispositivo acepta el permiso de seguimiento, el método connect() enviará el IDFA a nuestros servidores.
También puedes seguir llamando a connect() de Tenjin sin utilizar ATTrackingManager. Puedes optar por no implementar ATT si no tienes intención de acceder al IDFA de ningún usuario ni de transmitirlo a Tenjin.
#import "TenjinSDK.h"
@implementation TJNAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TenjinSDK init:@"<SDK_KEY>"];
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
[TenjinSDK connect];
}];
} else {
[TenjinSDK connect];
}
}Mostrar un mensaje solicitando permiso de ATT #
Para cumplir con las directrices de ATT de Apple, debes proporcionar una descripción para el mensaje de solicitud de permiso de ATT y, a continuación, implementar la solicitud de permiso en tu aplicación.
> Nota: Debes implementar la solicitud de permiso antes de mostrar anuncios en tu juego.
Configuración de una descripción del seguimiento de usuarios #
Apple exige una descripción para el mensaje de solicitud del permiso ATT. Debes configurar la descripción mediante la clave NSUserTrackingUsageDescription en el archivo Info.plist de tu proyecto de Xcode. Debes proporcionar un mensaje que informe al usuario de por qué solicitas permiso para utilizar los datos de seguimiento del dispositivo:
- En el navegador de proyectos de Xcode, abre el archivo
Info.plist. - Haz clic en el botón «Añadir» (+) situado junto a cualquier clave del editor de la lista de propiedades para crear una nueva clave de propiedad.
- Introduce el nombre de la clave
NSUserTrackingUsageDescription. - Selecciona un tipo de valor de cadena.
- Introduce el mensaje sobre la transparencia del seguimiento de aplicaciones en el campo de valor. Algunos ejemplos son:
- “Utilizaremos tus datos para ofrecerte una experiencia publicitaria mejor y más personalizada”.”
- “Intentamos mostrarte anuncios de aplicaciones y productos que te resulten más interesantes en función de las aplicaciones que utilizas, el dispositivo que estás utilizando y el país en el que te encuentras”.”
- “Intentamos mostrarte anuncios de aplicaciones y productos que te resulten más interesantes en función de las aplicaciones que utilizas”.”
> Nota: Apple ofrece unas [directrices específicas de la App Store][24] que definen el uso y los mensajes aceptables para todas las funciones relacionadas con la privacidad dirigidas a los usuarios finales. Tenjin no ofrece asesoramiento jurídico. Por lo tanto, la información de esta página no sustituye la necesidad de consultar a tu propio asesor jurídico para determinar los requisitos legales de tu empresa y tus procesos, así como la forma de cumplirlos.
SKAdNetwork y el valor de conversión #
Como parte de SKAdNetwork, hemos creado un método de envoltura para updatePostbackConversionValue(_:). Nuestro método registrará los métodos equivalentes de SKAdNetwork y también enviará los valores de conversión a nuestros servidores.
updatePostbackConversionValue(\_:) Deberás introducir un número entero comprendido entre 0 y 63 (valor decimal, no binario). Este valor debe reflejar directamente un evento dentro de la aplicación o un hito del usuario, en función de la estrategia específica de «valor de conversión» que establezcas para tu aplicación. Te recomendamos encarecidamente que consultes [esta][25] página para planificar la implementación del «valor de conversión» antes de programar esta lógica.
A partir de la versión iOS 16.1, que es compatible con SKAdNetwork 4.0, ya puedes enviar coarseValue (cadena de caracteres, con posibles variantes como “low”, “medium” o “high”) y lockWindow (booleano) como parámetros en el método de respuesta de actualización:
updatePostbackConversionValue(_ conversionValue: Integer, coarseValue: String)
updatePostbackConversionValue(_ conversionValue: Integer, coarseValue: String, lockWindow: Bool)
- En la versión 16.1 o posterior de iOS, que es compatible con SKAdNetwork 4.0, puedes llamar a este método tantas veces como quieras y establecer el valor de conversión por encima o por debajo del valor anterior.
- Para las versiones de iOS anteriores a la 16.1 que sean compatibles con versiones de SKAdNetwork anteriores a la 4.0, puedes llamar a este método y nuestro SDK detectará automáticamente la versión de iOS y actualizará únicamente
conversionValue.
#import "TenjinSDK.h"
@implementation TJNAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TenjinSDK initialize:@"<SDK_KEY>"];
[TenjinSDK connect];
//
// This will call [SKAdNetwork updatePostbackConversionValue: <Integer between 0 and 63>]
// and also send Conversion value to our servers.
//
// You will need to use a value between 0-63.
//
[TenjinSDK updatePostbackConversionValue:<Integer between 0 and 63>];
// For iOS 16.1+ (SKAN 4.0)
[TenjinSDK updatePostbackConversionValue:<Integer between 0 and 63> coarseValue:@"medium"];
[TenjinSDK updatePostbackConversionValue:<Integer between 0 and 63> coarseValue:@"medium" lockWindow:true];
}
@endSKAdNetwork y iOS: respuestas de los anunciantes para usuarios mayores de 15 años #
Para indicar Tenjin como destino de tus [respuestas de la red publicitaria SK][26], sigue estos pasos:
- Selecciona
Info.plisten el navegador de proyectos de Xcode. - Haz clic en el botón «Añadir» (+) situado junto a una clave en el editor de la lista de propiedades y pulsa Retorno.
- Escribe el nombre de la clave
NSAdvertisingAttributionReportEndpoint. - Selecciona «Cadena» en el menú desplegable de la columna «Tipo».
- Introducir
https://tenjin-skan.com
Estos pasos son una adaptación de las instrucciones de Apple que se pueden consultar aquí.
GDPR #
Como parte del cumplimiento del RGPD, con el SDK de Tenjin puedes activar o desactivar la participación de dispositivos o usuarios, o seleccionar qué parámetros específicos relacionados con los dispositivos deseas activar o desactivar. OptOut() no enviará ninguna solicitud de API a Tenjin, y no procesaremos ningún evento.
Para darse de alta o darse de baja:
#import "TenjinSDK.h"
@implementation TJNAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TenjinSDK initialize:@"<SDK_KEY>"];
if ([self checkOptInValue]) {
[TenjinSDK optIn];
}
else {
[TenjinSDK optOut];
}
[TenjinSDK connect];
//All your other stuff
//..
}
-(BOOL) checkOptInValue
{
// check opt-in value
// return YES; // if user opted-in
return NO;
}Para activar o desactivar parámetros específicos relacionados con el dispositivo, puedes utilizar OptInParams() o OptOutParams(). OptInParams() solo enviará los parámetros relacionados con el dispositivo que se hayan especificado. OptOutParams() enviará todos los parámetros relacionados con el dispositivo, excepto los que se hayan especificado.
- Tenga en cuenta que necesitamos el siguiente parámetro para realizar un seguimiento adecuado de los dispositivos en el sistema de Tenjin. Si falta este parámetro obligatorio, el evento no se procesará ni se registrará.
developer_device_id
Si tienes intención de utilizar Google Ads, también tendrás que añadir: advertising_id, developer_device_id, platform, os_version,app_version, configuración regional, device_model, y build_id.
Si solo quieres obtener parámetros específicos relacionados con el dispositivo, utiliza OptInParams(). En el ejemplo siguiente, solo utilizaremos estos parámetros relacionados con el dispositivo: ip_address, advertising_id, developer_device_id y limit_ad_tracking
[TenjinSDK initialize:@"<SDK_KEY>"];
NSArray *optInParams = @[@"ip_address", @"advertising_id", @"developer_device_id", @"limit_ad_tracking"];
[TenjinSDK optInParams:optInParams];
[TenjinSDK connect];Si quieres enviar TODOS los parámetros excepto aquellos específicos relacionados con el dispositivo, utiliza OptOutParams(). En el ejemplo siguiente, enviaremos TODOS los parámetros relacionados con el dispositivo excepto: locale, timezone y build_id.
[TenjinSDK initialize:@"<SDK_KEY>"];
NSArray *optOutParams = @[@"country", @"timezone", @"language"];
[TenjinSDK optOutParams:optOutParams];
[TenjinSDK connect];Activar o desactivar mediante CMP #
Puedes activar o desactivar automáticamente esta opción mediante los consentimientos de tu CMP (finalidad 1), que ya están guardados en el dispositivo del usuario. El método devuelve un valor booleano que indica si la opción está activada o desactivada.
optInOutUsingCMP()
[TenjinSDK initialize:@"<SDK_KEY>"];
optInOut = [TenjinSDK optInOutUsingCMP]; Parámetros relacionados con el dispositivo #
| Param | Descripción |
|---|---|
| dirección_IP | Dirección IP |
| id_publicitario | Identificador publicitario del dispositivo |
| identificador_del_dispositivo_del_desarrollador | N.º de identificación del proveedor |
| limit_ad_tracking | Seguimiento publicitario activado |
| plataforma | plataforma |
| os_version | versión del sistema operativo |
| dispositivo | nombre del dispositivo |
| modelo_del_dispositivo | modelo del dispositivo |
| nombre_del_modelo_del_dispositivo | dispositivo máquina |
| device_cpu | nombre de la CPU del dispositivo |
| os_version_release | versión del sistema operativo |
| build_id | ID de compilación |
| configuración regional | configuración regional del dispositivo |
| país | país de configuración regional |
| zona horaria | zona horaria |
Eventos de compra #
Pasa (SKPaymentTransaction *) transaction y (NSData *)receipt, tras la verificación de la compra, y a continuación puedes pasar SKPaymentTransactionStatePurchased a Tenjin para la transacción que se ha comprado:
//Get the NSData receipt
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];
//Pass the transaction and the receiptData to Tenjin
[TenjinSDK transaction: transaction andReceipt: receiptData];StoreKit 2: compras dentro de la aplicación #
StoreKit 2 es una API exclusiva para Swift. En el caso de las aplicaciones que utilizan StoreKit 2, puedes extraer la representación JWS y los detalles de la transacción:
import StoreKit
func handlePurchase(_ result: VerificationResult<Transaction>) async {
switch result {
case .verified(let transaction):
// Get the JWS representation (SK2 receipt)
let jwsRepresentation = transaction.jwsRepresentation
// Extract transaction details
let productId = transaction.productID
let transactionId = String(transaction.id)
let price = transaction.price ?? Decimal(0)
let currencyCode = transaction.currency?.identifier ?? "USD"
// Send to Tenjin
TenjinSDK.transaction(
withProductName: productId,
andCurrencyCode: currencyCode,
andQuantity: transaction.purchasedQuantity,
andUnitPrice: NSDecimalNumber(decimal: price),
andTransactionId: transactionId,
andBase64Receipt: jwsRepresentation
)
await transaction.finish()
case .unverified(_, _):
// Handle unverified transaction
break
}
}(Configuración flexible de la comisión de la App Store) Elige entre 0%, 15% y 30% como comisión sobre los ingresos de la App Store a través de nuestra nueva configuración. Los pasos son los siguientes:
- Ve a CONFIGURACIÓN –> Aplicaciones
- Haz clic en la aplicación para la que quieras realizar el cambio
- En la sección ‘Comisión de la App Store’, haz clic en ‘Editar’.’
- Elige entre 30%, 15% o 0% como comisión de la tienda de aplicaciones que prefieras.
- Selecciona la fecha de inicio y la fecha de finalización (o puedes dejar en blanco la fecha de finalización si no quieres que haya una).
- Haz clic en «Guardar» (nota: la comisión solo se puede aplicar a fechas futuras, no a fechas pasadas. Por lo tanto, establece la fecha de inicio a partir de la fecha en la que realices el cambio y en adelante).
Suscripción IAP #
IMPORTANTE: Si tienes una suscripción IAP, tendrás que añadir la clave pública de tu aplicación en el panel de control de Tenjin. Puedes recuperar tu secreto compartido específico de la aplicación iOS en consola de iTunes Connect \> Selecciona tu aplicación \> Información de la aplicación \> Secreto compartido específico de la aplicación.
Ten en cuenta que eres responsable de enviar una transacción de suscripción una vez durante cada periodo de suscripción (es decir, por ejemplo, en el caso de una suscripción mensual, deberás enviarnos una transacción al mes).
En la línea temporal de ejemplo que se muestra a continuación, solo se debe enviar un evento de transacción en los eventos “Primer cargo” y “Renovación”. Durante el periodo de prueba, no envíes el evento de transacción a Tenjin.
Para obtener más información sobre las suscripciones, consulta: Documentación de Apple sobre cómo trabajar con suscripciones
Eventos personalizados #
IMPORTANTE: NO ENVÍES EVENTOS PERSONALIZADOS ANTES del evento CONNECT/INITIALIZATION (arriba). La inicialización debe realizarse antes de enviar cualquier evento personalizado.
IMPORTANTE: Limita la longitud de los nombres de los eventos personalizados a menos de 80 caracteres. No superes los 500 nombres de eventos personalizados distintos.
También puedes utilizar el SDK de Tenjin para enviar un evento personalizado:
sendEventWithName: (NSString *)eventNamey
Puedes utilizarlos para transmitir a Tenjin las interacciones personalizadas con tu aplicación, con el fin de vincularlas al coste por usuario de cada fuente de adquisición que utilices a través de la plataforma de Tenjin. A continuación te ofrecemos algunos ejemplos de uso:
//send a particular event for when someone swipes on a part of your app
[TenjinSDK sendEventWithName:@"swipe_right"];Los eventos personalizados también pueden pasar un NSInteger eventValue. Tenjin utilizará este eventValue como recuento o suma de todos los eventos personalizados con el mismo eventName. El eventValue DEBE SER UN ENTERO. Si el eventValue no es un número entero, no enviaremos el evento.
//send a particular event for when someone swipes and an event value on a part of your app
[TenjinSDK sendEventWithName:@"swipe_right" andEventValue:@"1"];Integración entre servidores #
Tenjin ofrece integración de servidor a servidor. Esto te permite enviar tus eventos de instalación y posteriores a la instalación directamente desde tus servidores a los servidores de Tenjin sin necesidad de integrar un SDK.
Parámetro «Subversion» de la aplicación para pruebas A/B (requiere DataVault) #
Si estás realizando pruebas A/B y quieres informar de las diferencias, podemos añadir un valor numérico a la versión de tu aplicación mediante el método appendAppSubversion. Por ejemplo, si la versión de tu aplicación es 1.0.1 y configuras appendAppSubversion: @8888, se mostrará como 1.0.1.8888.
Estos datos aparecerán en DataVault, donde podrás generar informes utilizando los valores de subversión de la aplicación.
[TenjinSDK initialize:@" "];
[TenjinSDK appendAppSubversion:@8888];
[TenjinSDK connect];Integración de los ingresos publicitarios por impresiones #
Tenjin es compatible con la función «Ingresos publicitarios por impresión» (ILRD) de,
- AppLovin
- Unity LevelPlay
- HyperBid
- AdMob
- TopOn
- CAS
- TradPlus
- CloudX
Esta función te permite recibir eventos relacionados con tus ingresos publicitarios, que varían en función de cada anuncio que se muestra a un usuario. Puedes acceder a la guía de integración aquí.
Campañas LiveOps #
Tenjin permite recuperar información de atribución de los usuarios, como la red publicitaria de origen y la campaña, desde el SDK. Esto permitirá a los desarrolladores recopilar y analizar datos de atribución a nivel de usuario en tiempo real. A continuación se presentan los posibles casos de uso con Tenjin LiveOps Campaigns:
- Si dispones de tu propia herramienta de análisis de datos, la función de devolución de llamada S2S te permitirá vincular los datos de atribución a tus datos del juego a nivel de dispositivo.
- Muestra contenido diferente en la aplicación en función de la procedencia del usuario. Por ejemplo, si al usuario A se le atribuye el tráfico orgánico y al usuario B se le atribuye el tráfico de Meta, y es probable que el usuario B se involucre más con tu aplicación, entonces te interesará mostrarle una oferta especial dentro del juego una vez que haya instalado la aplicación. Si quieres comentar casos de uso más específicos, escribe a support@tenjin.com.
Puedes encontrar más información sobre cómo utilizar LiveOps aquí.
Número de usuario del cliente #
Puedes establecer y obtener el ID de usuario del cliente para enviarlo como parámetro en los eventos.
setCustomerUserId(userId: "user_id") getCustomerUserId()
[TenjinSDK initialize:@"<SDK_KEY>"];
[TenjinSDK setCustomerUserId:@"user_id"];
userId = [TenjinSDK getCustomerUserId]; ID de instalación de Analytics #
Puedes obtener el identificador de análisis, que se genera aleatoriamente y se guarda en el almacenamiento local del dispositivo. getAnalyticsInstallationId()
[TenjinSDK initialize:@" "];
analyticsId = [TenjinSDK getAnalyticsInstallationId]; Perfil de usuario – LiveOps Metrics #
El SDK de Tenjin realiza un seguimiento automático de las métricas de interacción de los usuarios para ayudarte a comprender el comportamiento de los jugadores y su valor a lo largo de su ciclo de vida. Estas métricas se recopilan automáticamente y se puede acceder a ellas mediante programación.
Seguimiento automático #
El SDK realiza un seguimiento automático de:
- Métricas de sesión: Número de sesiones, duración, fechas de la primera y la última sesión
- Compras dentro de la aplicación (IAP): Número de transacciones, ingresos por divisa, identificadores de los productos adquiridos
- Ingresos por publicidad (ILRD): Ingresos por impresión procedentes de redes publicitarias compatibles
Recuperación de datos del perfil de usuario #
Obtener el objeto de perfil completo #
Devuelve un objeto TJNUserProfileData con todas las métricas:
TJNUserProfileData *profile = [TenjinSDK getUserProfile];
// Session metrics
NSInteger sessionCount = profile.sessionCount;
long long totalTime = profile.totalSessionTime;
long long avgLength = profile.averageSessionLength;
long long lastSession = profile.lastSessionLength;
long long currentSession = profile.currentSessionDuration;
NSDate *firstSession = profile.firstSessionDate;
NSDate *lastSession = profile.lastSessionDate;
// IAP metrics
NSInteger iapCount = profile.iapTransactionCount;
NSDictionary *revenueByCurrency = profile.iapRevenueByCurrency;
NSArray *productIDs = profile.purchasedProductIDsArray;
// ILRD metrics
double totalAdRevenue = profile.totalILRDRevenueUSD;
NSDictionary *revenueByNetwork = profile.ilrdRevenueByNetwork;Inmuebles disponibles:
| Propiedad | Tipo | Descripción |
|---|---|---|
sessionCount | NSInteger | Número total de sesiones |
totalSessionTime | long long | Tiempo total en milisegundos |
averageSessionLength | long long | Duración media de la sesión en milisegundos |
lastSessionLength | long long | Última sesión completada en milisegundos |
currentSessionDuration | long long | Sesión activa actual en milisegundos |
firstSessionDate | NSDate? | Fecha de la primera sesión |
lastSessionDate | NSDate? | Fecha de la última sesión completada |
iapTransactionCount | NSInteger | Recuento total de IAP |
iapRevenueByCurrency | NSDictionary<NSString*, NSNumber*> | Ingresos por código de divisa |
purchasedProductIDsArray | NSArray<NSString*> | ID de productos ordenados |
totalILRDRevenueUSD | double | Ingresos publicitarios totales en USD |
ilrdRevenueByNetwork | NSDictionary<NSString*, NSNumber*> | Ingresos publicitarios por cadena |
Obtener el perfil como diccionario #
Devuelve un diccionario con todas las métricas para facilitar su serialización o visualización:
NSDictionary *profileDict = [TenjinSDK getUserProfileAsDictionary];
// Example usage
NSNumber *sessionCount = profileDict[@"session_count"];
NSString *firstSession = profileDict[@"first_session_date"];
NSDictionary *iapRevenue = profileDict[@"iap_revenue_by_currency"];
NSArray *productIds = profileDict[@"purchased_product_ids"];Claves del diccionario (siempre presentes):
| Clave | Tipo | Descripción |
|---|---|---|
session_count | NSNumber | Total de sesiones |
total_session_time | NSNumber | Tiempo total (milisegundos) |
average_session_length | NSNumber | Duración media de la sesión (milisegundos) |
last_session_length | NSNumber | Última sesión (milisegundos) |
iap_transaction_count | NSNumber | Recuento total de IAP |
total_ilrd_revenue_usd | NSNumber | Ingresos publicitarios totales en USD |
Claves del diccionario (condicionales: solo si están disponibles):
| Clave | Tipo | Descripción |
|---|---|---|
first_session_date | NSString | Fecha con formato ISO 8601 |
last_session_date | NSString | Fecha con formato ISO 8601 |
current_session_length | NSNumber | Duración de la sesión activa (milisegundos) |
iap_revenue_by_currency | NSDictionary | Correspondencia entre divisas y ingresos |
purchased_product_ids | NSArray | Matriz ordenada de identificadores de productos |
ilrd_revenue_by_network | NSDictionary | Mapa de la red → ingresos |
Restablecer perfil #
Borra todos los datos del perfil de usuario (útil para realizar pruebas o para cerrar la sesión del usuario):
[TenjinSDK resetUserProfile];Configuración de la sesión #
Personalizar el tiempo de espera de la sesión (por defecto, 30 minutos):
TJNUserProfileManager.sessionTimeoutInterval = 600; // 10 minutesMétodos auxiliares #
Obtener ingresos en una divisa concreta:
double usdRevenue = [profile getIAPRevenueForCurrency:@"USD"];Obtener los ingresos de ILRD para una red concreta:
double appLovinRevenue = [profile getILRDRevenueForNetwork:TJNAdNetworkAppLovin];Eventos de reintento/caché #
Puedes activar o desactivar el reenvío y el almacenamiento en caché de todos los eventos cuando las solicitudes fallen o los usuarios no dispongan de conexión a Internet. Estos eventos se enviarán una vez que se haya añadido un nuevo evento a la cola y el usuario haya recuperado la conexión.
setCacheEventSetting(true)
[TenjinSDK setCacheEventSetting:true];Parámetros de Google DMA #
Si ya tienes una CMP integrada, el SDK de Tenjin recopilará automáticamente los parámetros de Google DMA. No es necesario implementar nada en el SDK de Tenjin si tienes una CMP integrada. Si deseas anular tu CMP o, simplemente, crear tus propios mecanismos de consentimiento, puedes utilizar lo siguiente:
setGoogleDMAParametersWithAdPersonalization(bool, bool)
[[TeninSDK sharedInstance] setGoogleDMAParametersWithAdPersonalization:adPersonalization adUserData:adUserData]; Para gestionar de forma explícita la recopilación de los parámetros de Google DMA, tienes la posibilidad de activar o desactivar esta opción en cualquier momento. Aunque la configuración predeterminada es la activación, puedes ajustar fácilmente tus preferencias mediante los métodos `optInGoogleDMA` u `optOutGoogleDMA`, lo que te garantiza un control total sobre tus ajustes de privacidad de datos.
[TeninSDK optInGoogleDMA];
[TeninSDK optOutGoogleDMA]; 