Integrar utilizando LLMs (IA) – Utilize o seguinte prompt:
Adicionar o SDK do Tenjin ao meu projeto utilizando: https://raw.githubusercontent.com/tenjin/sdk-llm-guides/main/guides/ios/llm-guide.md
Resumo #
O SDK Tenjin iOS permite aos utilizadores monitorizar eventos e instalações nas suas aplicações iOS. Para saber mais sobre a Tenjin e a nossa gama de produtos, visite https://www.tenjin.com.
- Consulte as nossas Notas de Lançamento para ver o histórico detalhado das versões.
- Para obter instruções específicas para o Unity, visite https://github.com/tenjin/tenjin-unity-sdk.
- Em caso de dúvidas ou para obter assistência, contacte: support@tenjin.com
Notas: #
- É necessário ter o Xcode 13, caso esteja a utilizar o SDK iOS v1.12.17 ou superior.
- No que diz respeito ao AppTrackingTransparency, certifique-se de que atualiza o ficheiro
.plistdo seu projeto e adicionePrivacidade - Descrição da Utilização de Rastreamento(NSUserTrackingUsageDescription) juntamente com a mensagem de texto que pretende apresentar aos utilizadores. Esta biblioteca só está disponível no iOS 14.0+. - Para Apple Search Ads Attribution, certifique-se de que atualiza para a versão 1.12.6 ou superior e adicione a biblioteca
AdServices.framework. Esta biblioteca só está disponível no iOS 14.3 ou superior.
Integração do SDK #
Cocoapods #
Se utilizar pods, adicione pod 'TenjinSDK' ao seu Podfile, em seguida, execute pod Install e avance para o passo 4.
Gestor de Pacotes Swift #
Se utilizar o SPM, adicione o pacote SDK do Tenjin através do Xcode utilizando este repositório [aqui][43] e avance para o passo 4.
- Descarregue a versão mais recente do SDK [aqui][21].
- Arraste
TenjinSDK.xcframeworkeTenjinSDK.hpara o seu projeto, na secção “Fases de compilação” -> «Ligar binário a bibliotecas». - Inclua as opções do ligador
-ObjCnas suas «Definições de Compilação»
Passos para projetos em Objective-C #
- Aceda ao seu ficheiro AppDelegate, que, por predefinição, é
AppDelegate.m, e#import "TenjinSDK.h". - Obtenha a sua
SDK_KEYna página da sua aplicação. Nota:SDK_KEYé única para cada uma das suas aplicações. Pode criar até 3 chaves para a mesma aplicação.

- No seu método
didFinishLaunchingWithOptions, adicione:
[TenjinSDK initialize:@" "];
[TenjinSDK connect];- Para ativar os registos de depuração do SDK do Tenjin iOS, adicione:
[TenjinSDK debugLogs];Eis um exemplo de como deve ser a integração em projetos Objective-C no seu ficheiro AppDelegate.m:
#import "TenjinSDK.h"
@implementation TJNAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TenjinSDK initialize:@"<SDK_KEY>"];
[TenjinSDK connect];
//All your other stuff
...
}Passos para projetos em Swift #
- Adicione um ficheiro de cabeçalho de ligação Objective-C aos projetos Swift. Se o seu projeto ainda não tiver um ficheiro de cabeçalho de ligação, crie um:
- Criar um ficheiro de cabeçalho
- Ficheiro -> Novo -> Ficheiro -> “Fontes”
- Selecione o ficheiro “Header” – > Clique em «Seguinte»
- O nome do ficheiro de cabeçalho deve ser “YourProjectName-Bridging-Header” – Em “Targets” -> Selecione o alvo da aplicação -> Clique em «Next»
- No ficheiro de cabeçalho – “YourProjectName-Bridging-Header.h”
- Adicione o seguinte:
#import "TenjinSDK.h" - Vá até ao destino da aplicação e, na secção “Definições de compilação”
- Vá para a secção “Compilador Swift – Geral”
- Vá até à subsecção “Objective-C Bridging Header” e arraste o ficheiro de cabeçalho – “YourProjectName-Bridging-Header.h” – para o campo.
- Adicione o seguinte:
- Criar um ficheiro de cabeçalho
- Obtenha a sua
SDK_KEYna página da sua aplicação. Nota:SDK_KEYé única para cada uma das suas aplicações. Pode criar até 3 chaves para a mesma aplicação.

- a. No seu método
didFinishLaunchingWithOptions, adicione:
TenjinSDK.getInstance(" ")
TenjinSDK.connect()Se estiver a utilizar o Swift 5, utilize o método getInstance() em vez de init(). Consulte a nossa aplicação de exemplo em Swift
- Para ativar os registos de depuração do SDK do Tenjin iOS, adicione:
TenjinSDK.debugLogs();Eis um exemplo de como deve ser a integração em projetos Swift no seu ficheiro 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: Certifique-se de que implementa este código em todos os didFinishLaunchingWithOptions, e não apenas na primeira vez que a aplicação for aberta.
Inicialização alternativa para gerir links diretos provenientes de outros serviços. Se utilizar outros serviços para criar links diretos diferidos, pode passar esses links diretos ao Tenjin para que este trate da lógica de atribuição com os seus links diretos ativados no 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
//...
}Pode verificar se a integração está a funcionar através da nossa Ferramenta de Dados de Dispositivos em Teste ao Vivo. Adicione o seu advertising_id ou IDFA/GAID à lista de dispositivos de teste. Pode encontrar esta informação em Suporte -\> Dispositivos de Teste. Aceda à página Ferramenta de Eventos em Tempo Real e envie os eventos de teste a partir da sua aplicação. Deverá ver os eventos em tempo real a chegar:
Inicialização do Tenjin com o ATTrackingManager #
A partir da versão iOS 14, tem a opção de apresentar o aviso inicial de autorizações do ATTrackingManager e a seleção para os utilizadores aceitarem ou recusarem a autorização.
Se o dispositivo não aceitar a permissão de rastreamento, o IDFA passará a ser zero. Se o dispositivo aceitar a permissão de rastreamento, o método connect() enviará o IDFA para os nossos servidores.
Também pode continuar a chamar o connect() da Tenjin, sem utilizar o ATTrackingManager. Pode optar por não implementar o ATT se não pretender aceder ao IDFA ou transmiti-lo para a Tenjin relativamente a quaisquer utilizadores.
#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];
}
}Exibir um aviso de autorização da ATT #
Para cumprir as diretrizes da Apple relativas à ATT, deve fornecer uma descrição para o aviso de autorização da ATT e, em seguida, implementar o pedido de autorização na sua aplicação.
> Nota: É necessário implementar o pedido de autorização antes de exibir anúncios no seu jogo.
Configurar uma descrição de acompanhamento do utilizador #
A Apple exige uma descrição para o aviso de autorização ATT. Tem de definir a descrição com a chave NSUserTrackingUsageDescription no ficheiro Info.plist do seu projeto Xcode. Deve fornecer uma mensagem que informe o utilizador sobre o motivo pelo qual está a solicitar permissão para utilizar dados de rastreamento do dispositivo:
- No navegador de projetos do Xcode, abra o ficheiro
Info.plist. - Clique no botão «Adicionar» (+) ao lado de qualquer chave no editor da lista de propriedades para criar uma nova chave de propriedade.
- Introduza o nome da chave
NSUserTrackingUsageDescription. - Selecione um tipo de valor de cadeia de caracteres.
- Introduza a mensagem de transparência relativa ao rastreio de aplicações no campo de valor. Alguns exemplos incluem:
- “Iremos utilizar os seus dados para lhe proporcionar uma experiência publicitária melhor e personalizada.”
- “Procuramos apresentar anúncios de aplicações e produtos que sejam mais do seu interesse, com base nas aplicações que utiliza, no dispositivo que está a utilizar e no país em que se encontra.”
- “Procuramos apresentar anúncios de aplicações e produtos que sejam mais do seu interesse, com base nas aplicações que utiliza.”
> Nota: A Apple disponibiliza [orientações específicas da App Store][24] que definem a utilização aceitável e as mensagens a transmitir relativamente a todas as funcionalidades relacionadas com a privacidade destinadas aos utilizadores finais. A Tenjin não presta aconselhamento jurídico. Por conseguinte, a informação contida nesta página não substitui a procura de aconselhamento jurídico para determinar os requisitos legais da sua empresa e dos seus processos, nem a forma de os cumprir.
SKAdNetwork e valor de conversão #
No âmbito da SKAdNetwork, criámos um método wrapper para updatePostbackConversionValue(_:). O nosso método irá registar os métodos equivalentes da SKAdNetwork e também enviar os valores de conversão para os nossos servidores.
updatePostbackConversionValue(\_:) Deve indicar um número inteiro entre 0 e 63 (valor decimal, não binário). Este valor deve refletir diretamente um evento na aplicação ou um marco do utilizador, com base na estratégia específica de «valor de conversão» que definir para a sua aplicação. Recomendamos vivamente que consulte [esta][25] página para planear a implementação do «valor de conversão» antes de programar esta lógica.
A partir da versão iOS 16.1, que suporta o SKAdNetwork 4.0, já é possível enviar coarseValue (String, com as variantes possíveis “low”, “medium” ou “high”) e lockWindow (Boolean) como parâmetros no método de postback de atualização:
updatePostbackConversionValue(_ conversionValue: Integer, coarseValue: String)
updatePostbackConversionValue(_ conversionValue: Integer, coarseValue: String, lockWindow: Bool)
- Na versão 16.1+ do iOS, que suporta o SKAdNetwork 4.0, pode chamar este método quantas vezes quiser e definir o valor da conversão para um valor inferior ou superior ao valor anterior.
- Para versões do iOS anteriores à 16.1 que suportem versões do SKAdNetwork anteriores à 4.0, pode chamar este método e o nosso SDK irá detetar automaticamente a versão do iOS e atualizar apenas
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 e iOS: Postbacks de anunciantes para maiores de 15 anos #
Para definir o Tenjin como destino dos seus [postbacks da SK Ad Network][26], proceda da seguinte forma:
- Selecione
Info.plistno navegador do projeto no Xcode. - Clique no botão «Adicionar» (+) ao lado de uma chave no editor da lista de propriedades e prima a tecla Return.
- Digite o nome da chave
NSAdvertisingAttributionReportEndpoint. - Selecione «String» no menu suspenso da coluna «Tipo».
- Entrar
https://tenjin-skan.com
Estes passos são uma adaptação das instruções da Apple disponíveis em aqui.
RGPD #
No âmbito da conformidade com o RGPD, com o SDK da Tenjin pode ativar ou desativar a participação de dispositivos/utilizadores, ou selecionar quais os parâmetros específicos relacionados com o dispositivo que pretende ativar ou desativar. OptOut() não enviará quaisquer pedidos de API à Tenjin, e não processaremos quaisquer eventos.
Para subscrever/cancelar a subscrição:
#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 ativar ou desativar parâmetros específicos relacionados com o dispositivo, pode utilizar o OptInParams() ou o OptOutParams(). OptInParams() enviará apenas os parâmetros relacionados com o dispositivo que estiverem especificados. OptOutParams() enviará todos os parâmetros relacionados com o dispositivo, exceto aqueles que forem especificados.
- Por favor, tenha em atenção que necessitamos do seguinte parâmetro para efetuar o acompanhamento adequado dos dispositivos no sistema da Tenjin. Se este parâmetro obrigatório não estiver presente, o evento não será processado nem registado.
developer_device_id
Se pretender utilizar o Google Ads, terá também de adicionar: advertising_id, developer_device_id, platform, os_version,app_version, locale, device_model, e build_id.
Se pretender obter apenas parâmetros específicos relacionados com o dispositivo, utilize OptInParams(). No exemplo abaixo, iremos utilizar apenas estes parâmetros relacionados com o dispositivo: ip_address, advertising_id, developer_device_id e limit_ad_tracking
[TenjinSDK initialize:@"<SDK_KEY>"];
NSArray *optInParams = @[@"ip_address", @"advertising_id", @"developer_device_id", @"limit_ad_tracking"];
[TenjinSDK optInParams:optInParams];
[TenjinSDK connect];Se pretender enviar TODOS os parâmetros, exceto parâmetros específicos relacionados com o dispositivo, utilize OptOutParams(). No exemplo abaixo, iremos enviar TODOS os parâmetros relacionados com o dispositivo, exceto: locale, timezone e build_id.
[TenjinSDK initialize:@"<SDK_KEY>"];
NSArray *optOutParams = @[@"country", @"timezone", @"language"];
[TenjinSDK optOutParams:optOutParams];
[TenjinSDK connect];Ativar/desativar através do CMP #
Pode ativar ou desativar automaticamente esta funcionalidade utilizando os seus consentimentos CMP (finalidade 1), que já se encontram guardados no dispositivo do utilizador. O método devolve um valor booleano para indicar se a funcionalidade está ativada ou desativada.
optInOutUsingCMP()
[TenjinSDK initialize:@"<SDK_KEY>"];
optInOut = [TenjinSDK optInOutUsingCMP]; Parâmetros relacionados com o dispositivo #
| Param | Descrição |
|---|---|
| endereço_IP | Endereço IP |
| id_publicitário | ID de publicidade do dispositivo |
| identificador_do_dispositivo_do_desenvolvedor | N.º de identificação do fornecedor |
| limitar_o_rastreio_de_publicidade | rastreamento de anúncios limitado ativado |
| plataforma | plataforma |
| os_version | versão do sistema operativo |
| dispositivo | nome do dispositivo |
| modelo_do_dispositivo | modelo do dispositivo |
| nome_do_modelo_do_dispositivo | dispositivo máquina |
| device_cpu | nome da CPU do dispositivo |
| os_version_release | versão do sistema operativo |
| build_id | ID da compilação |
| configuração regional | configuração regional do dispositivo |
| país | país de localização |
| fuso horário | fuso horário |
Eventos de compra #
Passe (SKPaymentTransaction *) transaction e (NSData *)receipt, após a verificação da compra, e, em seguida, pode passar SKPaymentTransactionStatePurchased ao Tenjin para a transação que foi efetuada:
//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 no Aplicação #
O StoreKit 2 é uma API exclusiva para Swift. Nas aplicações que utilizam o StoreKit 2, é possível extrair a representação JWS e os detalhes da transação:
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
}
}(Configuração flexível da comissão da App Store) Escolha entre 0%, 15% e 30% como comissão sobre as receitas da App Store através da nossa nova configuração. Os passos são os seguintes: –
- Vá a CONFIGURAR –> Aplicações
- Clique na aplicação que pretende alterar
- Na secção ‘Comissão da App Store’, clique em ‘Editar’
- Escolha 30%, 15% ou 0% como a comissão que pretende receber da loja de aplicações.
- Selecione a data de início e a data de fim (ou pode deixar a data de fim em branco, se não quiser definir uma data de fim)
- Clique em «Guardar» (nota: a comissão só pode ser aplicada a datas futuras e não a datas passadas. Por isso, defina a data de início a partir da data em que efetuar a alteração e para a frente)
Assinatura IAP #
IMPORTANTE: Se tiver uma subscrição IAP, terá de adicionar a chave pública da sua aplicação no painel de controlo do Tenjin. Pode recuperar o seu Segredo Partilhado Específico da Aplicação iOS a partir do Console do iTunes Connect \> Selecione a sua aplicação \> Informações da aplicação \> Segredo partilhado específico da aplicação.
Por favor, tenha em atenção que é da sua responsabilidade enviar uma transação de subscrição uma vez durante cada período de subscrição (ou seja, por exemplo, no caso de uma subscrição mensal, terá de nos enviar uma transação por mês).
Na linha do tempo de exemplo abaixo, um evento de transação só deve ser enviado nos eventos “Primeira cobrança” e “Renovação”. Durante o período de avaliação, não envie o evento de transação à Tenjin.
Para mais informações sobre subscrições, consulte: Documentação da Apple sobre como trabalhar com subscrições
Eventos personalizados #
IMPORTANTE: NÃO ENVIE EVENTOS PERSONALIZADOS ANTES do evento CONNECT/INITIALIZATION (acima). A inicialização deve ocorrer antes do envio de quaisquer eventos personalizados.
IMPORTANTE: Limite os nomes dos eventos personalizados a menos de 80 caracteres. Não exceda os 500 nomes únicos de eventos personalizados.
Também pode utilizar o SDK do Tenjin para enviar um evento personalizado:
sendEventWithName: (NSString *)eventNamee
Pode utilizar estes elementos para transmitir interações personalizadas do Tenjin com a sua aplicação, de forma a associá-las ao custo por utilizador de cada fonte de aquisição que utilize através da plataforma do Tenjin. Aqui ficam alguns exemplos de utilização:
//send a particular event for when someone swipes on a part of your app
[TenjinSDK sendEventWithName:@"swipe_right"];Os eventos personalizados também podem passar um NSInteger eventValue. O Tenjin utilizará este eventValue como contagem ou soma para todos os eventos personalizados com o mesmo eventName. O eventValue DEVE SER UM NÚMERO INTEIRO. Se o eventValue não for um número inteiro, não enviaremos o 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"];Integração entre servidores #
A Tenjin oferece integração servidor a servidor. Isto permite-lhe enviar os seus eventos de instalação e pós-instalação diretamente dos seus servidores para os servidores da Tenjin, sem necessidade de integração de um SDK.
Parâmetro «Subversion» da aplicação para testes A/B (requer o DataVault) #
Se estiver a realizar testes A/B e pretender comunicar as diferenças, podemos acrescentar um valor numérico à versão da sua aplicação utilizando o método appendAppSubversion. Por exemplo, se a versão da sua aplicação for 1.0.1 e definir appendAppSubversion: @8888, será apresentada como 1.0.1.8888.
Estes dados serão apresentados no DataVault, onde poderá gerar relatórios utilizando os valores de subversão da aplicação.
[TenjinSDK initialize:@" "];
[TenjinSDK appendAppSubversion:@8888];
[TenjinSDK connect];Integração das receitas publicitárias com base no número de impressões #
O Tenjin suporta a integração com a funcionalidade «Impression Level Ad Revenue» (ILRD) da,
- AppLovin
- Unity LevelPlay
- HyperBid
- AdMob
- TopOn
- CAS
- TradPlus
- CloudX
Esta funcionalidade permite-lhe receber eventos relacionados com as suas receitas publicitárias, que são afetadas por cada anúncio apresentado a um utilizador. Pode aceder ao guia de integração aqui.
Campanhas LiveOps #
O Tenjin permite a recuperação de informações de atribuição do utilizador, tais como a rede publicitária de origem e a campanha, a partir do SDK. Isto permitirá aos programadores recolher e analisar dados de atribuição ao nível do utilizador em tempo real. Aqui estão os possíveis casos de utilização com as Campanhas Tenjin LiveOps:
- Se tiver a sua própria ferramenta de análise de dados, o callback S2S permitir-lhe-á associar os dados de atribuição aos seus dados no jogo, ao nível de cada dispositivo.
- Mostre conteúdos diferentes na aplicação, dependendo da origem do utilizador. Por exemplo, se o utilizador A for atribuído ao tráfego orgânico e o utilizador B for atribuído à Meta, e se for provável que o utilizador B se envolva mais com a sua aplicação, então convém mostrar uma oferta especial no jogo depois de o utilizador instalar a aplicação. Se quiser discutir casos de utilização mais específicos, escreva para support@tenjin.com.
Pode encontrar mais informações sobre como utilizar o LiveOps aqui.
ID de utilizador do cliente #
Pode definir e obter o ID de utilizador do cliente para o enviar como parâmetro nos eventos.
setCustomerUserId(userId: "user_id") getCustomerUserId()
[TenjinSDK initialize:@"<SDK_KEY>"];
[TenjinSDK setCustomerUserId:@"user_id"];
userId = [TenjinSDK getCustomerUserId]; ID de instalação do Analytics #
Pode obter o ID de análise, que é gerado aleatoriamente e guardado no armazenamento local do dispositivo. getAnalyticsInstallationId()
[TenjinSDK initialize:@" "];
analyticsId = [TenjinSDK getAnalyticsInstallationId]; Perfil do utilizador – LiveOps Metrics #
O SDK da Tenjin monitoriza automaticamente as métricas de envolvimento dos utilizadores para o ajudar a compreender o comportamento dos jogadores e o valor ao longo do ciclo de vida. Estas métricas são recolhidas automaticamente e podem ser acedidas programaticamente.
Rastreamento automático #
O SDK monitoriza automaticamente:
- Métricas da sessão: Número de sessões, duração, datas da primeira e da última sessão
- Compras na aplicação (IAP): Número de transações, receitas por moeda, IDs dos produtos adquiridos
- Receitas publicitárias (ILRD): Receitas por impressão provenientes de redes de publicidade compatíveis
Recuperação de dados do perfil do utilizador #
Obter o objeto de perfil completo #
Devolve um objeto TJNUserProfileData com todas as 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;Imóveis disponíveis:
| Propriedade | Tipo | Descrição |
|---|---|---|
sessionCount | NSInteger | Número total de sessões |
totalSessionTime | long long | Tempo total em milissegundos |
averageSessionLength | long long | Duração média da sessão em milissegundos |
lastSessionLength | long long | Última sessão concluída em milissegundos |
currentSessionDuration | long long | Sessão ativa atual em milissegundos |
firstSessionDate | NSDate? | Data da primeira sessão |
lastSessionDate | NSDate? | Data da última sessão concluída |
iapTransactionCount | NSInteger | Número total de IAP |
iapRevenueByCurrency | NSDictionary<NSString*, NSNumber*> | Receitas por código de moeda |
purchasedProductIDsArray | NSArray<NSString*> | IDs de produtos ordenados |
totalILRDRevenueUSD | double | Receita total de publicidade em USD |
ilrdRevenueByNetwork | NSDictionary<NSString*, NSNumber*> | Receitas publicitárias por rede |
Obter perfil como dicionário #
Devolve um dicionário com todas as métricas, para facilitar a serialização ou a visualização:
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"];Chaves do dicionário (sempre presentes):
| Chave | Tipo | Descrição |
|---|---|---|
session_count | NSNumber | Total de sessões |
total_session_time | NSNumber | Tempo total (milissegundos) |
average_session_length | NSNumber | Duração média da sessão (milissegundos) |
last_session_length | NSNumber | Última sessão (milissegundos) |
iap_transaction_count | NSNumber | Número total de IAP |
total_ilrd_revenue_usd | NSNumber | Receita total de publicidade em USD |
Chaves do dicionário (condicionais – apenas se estiverem disponíveis):
| Chave | Tipo | Descrição |
|---|---|---|
first_session_date | NSString | Data no formato ISO 8601 |
last_session_date | NSString | Data no formato ISO 8601 |
current_session_length | NSNumber | Duração da sessão ativa (milissegundos) |
iap_revenue_by_currency | NSDictionary | Mapa da moeda → receitas |
purchased_product_ids | NSArray | Matriz ordenada de IDs de produtos |
ilrd_revenue_by_network | NSDictionary | Mapa da rede → receitas |
Redefinir perfil #
Limpa todos os dados do perfil do utilizador (útil para testes ou para o utilizador terminar a sessão):
[TenjinSDK resetUserProfile];Configuração da sessão #
Personalizar o tempo de expiração da sessão (por predefinição, 30 minutos):
TJNUserProfileManager.sessionTimeoutInterval = 600; // 10 minutesMétodos auxiliares #
Obter receitas numa moeda específica:
double usdRevenue = [profile getIAPRevenueForCurrency:@"USD"];Obter as receitas do ILRD para uma rede específica:
double appLovinRevenue = [profile getILRDRevenueForNetwork:TJNAdNetworkAppLovin];Eventos de nova tentativa/cache #
Pode ativar ou desativar a repetição de tentativas e o armazenamento em cache de todos os eventos quando as solicitações falham ou os utilizadores não têm ligação à Internet. Estes eventos serão enviados depois de um novo evento ter sido adicionado à fila e de o utilizador ter recuperado a ligação.
setCacheEventSetting(true)
[TenjinSDK setCacheEventSetting:true];Parâmetros do Google DMA #
Se já tiver uma CMP integrada, os parâmetros do Google DMA serão recolhidos automaticamente pelo SDK do Tenjin. Não é necessário implementar nada no SDK do Tenjin se tiver uma CMP integrada. Se pretender substituir a sua CMP ou, simplesmente, criar os seus próprios mecanismos de consentimento, pode utilizar o seguinte:
setGoogleDMAParametersWithAdPersonalization(bool, bool)
[[TeninSDK sharedInstance] setGoogleDMAParametersWithAdPersonalization:adPersonalization adUserData:adUserData]; Para gerir explicitamente a recolha de parâmetros do Google DMA, tem a flexibilidade de ativar ou desativar esta funcionalidade a qualquer momento. Embora a configuração predefinida seja a ativação, pode ajustar facilmente as suas preferências utilizando os métodos optInGoogleDMA ou optOutGoogleDMA, garantindo assim o controlo total sobre as suas definições de privacidade de dados.
[TeninSDK optInGoogleDMA];
[TeninSDK optOutGoogleDMA]; 