Visão geral: o plugin Unity da AppsFlyer oferece a funcionalidade de atribuição de aplicativos e relatórios de eventos para aplicativos mobile de Android e iOS, que foram desenvolvidos na plataforma de desenvolvimento Unity. Em termos de funcionalidade, o plugin é equivalente aos SDKs da AppsFlyer para iOS e Android.
Suporte Unity V6 para iOS 14
A versão 6 do plugin Unity inclui suporte para iOS 14 e apresenta alterações significativas em relação ao método da API de versões anteriores. Migrar para o Unity V6 a partir de uma versão anterior implica em alterações significativas. Essas alterações incluem novas APIs, diferentes classes e nomes de pacotes e a remoção do: com.appsflyer.GetDeepLinkingActivity
Para atualizar o seu plugin a partir de uma versão anterior (V5), consulte nosso guia sobre migração para a V6 beta (requer atualização do pacote Unity).
Observação
O plugin Unity V4 foi descontinuado. O guia de integração V4 está disponível para download em formato PDF (link abaixo).
Plugin Unity V6
A versão 6 do plugin Unity permite o desenvolvimento de aplicativos iOS e Android usando a plataforma Unity em tempo real. Com base nos SDKs mobile da AppsFlyer, ele implementa os mesmos métodos e dá suporte à funcionalidade equivalente à dos SDKs específicos das plataformas (iOS e Android). O plugin é de código aberto e está disponível no GitHub. Neste artigo, os termos plugin e SDK são usados como sinônimos.
1. Visão geral—Unity V6
Os aplicativos mobile desenvolvidos na plataforma Unity usam um plugin comum da AppsFlyer para ambas as plataformas Android e iOS.
Guia | Conteúdo | Resultado |
---|---|---|
[Obrigatório] Integração |
Adicionar e configurar o plugin |
O dashboard do aplicativo mostra:
|
[Recomendado] |
Use as APIs principais do plugin para:
|
O dashboard do aplicativo mostra:
Pronto para:
|
APIs adicionais |
Implemente e use as APIs opcionais para:
|
Pronto para:
|
Referência da API |
Referência rápida da API do SDK para desenvolvedores |
Desenvolvedores de aplicativos, o conteúdo desta aba é do seu interesse. Depois de implementar e inicializar o plugin, o profissional de marketing/anunciante poderá ver duas instalações no Dashboard de Visão Geral do aplicativo da AppsFlyer—uma orgânica e outra não orgânica.
2. Adicione o plugin ao seu aplicativo
Importante!
O Unity SDK da AppsFlyer não possui suporte para o Unity Internal Build System.
2.1. Faça o download do plugin Unity da AppsFlyer
Faça o download do plugin no GitHub.
2.2. Instale o plugin
Por padrão, o Gerenciador de Dependência Externa para Unity (EDM4U) é distribuído com o plugin Unity da AppsFlyer. Isso facilita o processo de integração, resolvendo conflitos de dependência entre o seu plugin e outros plugins em seu projeto.
Para instalar o plugin:
Adicione appsflyer-unity-plugin.v*.unitypackage para importar automaticamente todos os recursos necessários tanto para o plugin da AppsFlyer quanto para o EDM4U.
Para instalar o plugin sem o EDM4U:
- Faça a importação de appsflyer-unity-plugin.v*.unitypackage para o seu projeto, mas certifique-se de limpar a seleção de dependências EDM4U.
- Faça o download e adicione as dependências necessárias do Android à pasta Assets/Plugins/Android:
- Faça o download e adicione as dependências necessárias do iOS à pasta Assets/Plugins/iOS/AppsFlyer:
2.3. Configure o Android
Para configurar as permissões necessárias do Android:
Defina as seguintes permissões no AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
3. Implemente e inicialize o plugin
Esta seção descreve como implementar e inicializar o plugin.
3.1. Recupere a chave do desenvolvedor
- A chave é única e identifica a conta. Em alguns casos, há uma chave a nível do aplicativo.
- A chave do desenvolvedor (dev key) é obrigatória.
Para obter a chave do desenvolvedor:
- Na AppsFlyer, acesse Configuração > Configurações do App.
- Obtenha a chave do desenvolvedor.
3.2. Inicialize o plugin
Para inicializar o plugin usando o prefab:
- Acesse Assets > AppsFlyer.
- Arraste AppsFlyerObject.prefab para o local correspondente.
- Defina os seguintes campos:
Setting Remarks Chave do desenvolvedor (Dev key) Cole a chave do desenvolvedor que você obteve anteriormente. App ID iOS: insira o ID do aplicativo iOS. Certifique-se de adicionar o ID com prefixo.
Android: deixe em branco.
Get conversion data Se o aplicativo implementar o deep linking da AppsFlyer, defina como 'True'. O padrão é 'False', o que significa que, por padrão, o deep linking NÃO está implementado. Is debug Para ver logs de depuração durante o desenvolvimento: defina como true.
Observação: certifique-se de desativar (definir como 'false') antes de liberar o aplicativo para produção.
- Atualize o código em Assets > AppsFlyer > AppsFlyerObjectScript.cs com outras APIsdisponíveis.
Para integrar manualmente:
Crie um objeto de jogo e adicione o seguinte código de init:
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
void Start()
{
/* AppsFlyer.setDebugLog(true); */
AppsFlyer.initSDK("devkey", "appID", this);
AppsFlyer.startSDK();
}
public void onConversionDataSuccess(string conversionData)
{
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
// add deferred deeplink logic here
}
public void onConversionDataFail(string error)
{
AppsFlyer.AFLog("onConversionDataFail", error);
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
public void onAppOpenAttributionFailure(string error)
{
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
Observação: certifique-se de não incluir 'destroy' no objeto do jogo.
4. Teste as instalações
4.1. Inclua seu dispositivo de teste na lista de permissões
Inclua o dispositivo de teste na lista de permissões.
4.2. Simule instalações
Simule instalações orgânicas e não-orgânicas.
Simule uma instalação orgânica
Instalações orgânicas são instalações não atribuídas; normalmente são o resultado de instalações feitas diretamente por meio de lojas de aplicativos.
Para simular uma instalação orgânica, consulte as instruções relevantes do sistema operacional:
Simule uma instalação não-orgânica
Instalações não-orgânicas são instalações atribuídas; elas geralmente são o resultado do engajamento com um anúncio.
Para simular uma instalação não orgânica (usando links de atribuição), consulte as instruções relevantes do sistema operacional:
Observação
Quando terminar de testar e de fazer a depuração da integração, desative os logs.
Registrar eventos in-app e receita mensura a qualidade dos usuários do seu aplicativo, enquanto o deep linking permite que você ofereça aos usuários do aplicativo uma experiência melhor.
Desenvolvedores de aplicativo encontrarão instruções relevantes nesta aba. Entretanto, a contribuição do proprietário ou do profissional de marketing do aplicativo é fundamental. O proprietário do aplicativo:
- Decide os eventos in-app necessários para registrar e mensurar a qualidade do usuário.
- É preciso acessar a plataforma da AppsFlyer para configurar o OneLink para deep linking.
5. Registre eventos in-app
Registre eventos in-app para mensurar KPIs como: receita, ROI e LTV (Lifetime Value).
Os eventos in-app devem ser implementados para que seja possível registrar eventos do usuário. Os eventos podem ser transmitidos de diversas maneiras:
- [Prática recomendada] Transmissão de eventos através do aplicativo conforme descrito neste artigo.
- Para métodos adicionais, veja o guia de visão geral de eventos in-app.
Para aplicativos que pertencem a uma vertical específica, por exemplo viagens, jogos, eCommerce, consulte a lista de eventos in-app recomendados por vertical.
5.1. Nomes e parâmetros de eventos in-app
Para transmitir eventos:
- Especifique o nome do evento e os parâmetros.
- Veja as listas relacionadas:
- Lista de nomes e estruturas de eventos recomendados
- Lista encontrada na classe
AFInAppEvents
.
[Prática recomendada] Use nomes de eventos e parâmetros pelas seguintes razões:
- Nomeação padrão: a AppsFlyer pode mapear eventos automaticamente para SRNs, como Facebook, Google e Twitter.
- Compatibilidade com versões anteriores: nenhum problema surgirá se a AppsFlyer alterar um nome ou parâmetro de evento. A implementação é compatível com versões anteriores.
5.2. Registro de receita
Relate a receita adicionando o parâmetro af_revenue
aos eventos in-app.
- Preencha o campo
af_revenue
com valores numéricos. São permitidos valores negativos. - O parâmetro
af_revenue
preenche marcadores de receita da AppsFlyer e campos de dados brutos. Isso permite que os profissionais de marketing visualizem a receita diretamente no dashboard. - A receita pode ser enviada usando outros parâmetros, mas ela não será reconhecida como receita pela plataforma da AppsFlyer. Clique aqui para mais detalhes.
- Os valores de receita não podem conter vírgulas, símbolos monetários ou texto.
Exemplo de evento de receita: 1234.56
Prática recomendada: saiba mais sobre configurações de moeda, exibição e conversão monetária.
Requisitos de código monetário ao transmitir eventos de receita
- Moeda padrão: USD
- Use um código ISO 4217 de 3 caracteres (veja um exemplo a seguir).
- Defina o código monetário através de uma chamada à API:
AppsFlyer.setCurrencyCode("ZZZ")
Exemplo: Evento de compra in-app com receita
Este evento de compra é de 200,12 euros. Para que a receita seja refletida no dashboard, use o seguinte.
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "EUR");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200.12");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a",);
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
Registrar receita negativa
Registre a receita negativa usando um sinal de menos.
- O valor da receita é precedido por um sinal de menos.
- O nome do evento tem um valor único, "cancel_purchase". Isso permite que você identifique eventos de receitas negativas nos relatórios de dados brutos e no painel.
Exemplo: um usuário do aplicativo recebe um reembolso ou cancela uma assinatura.
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "-200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
AppsFlyer.sendEvent ("cancel_purchase", purchaseEvent);
5.3. Validação de compra in-app
O plugin oferece a verificação do servidor para compras dentro do aplicativo.
Para validar uma compra, siga instruções específicas do sistema operacional:
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey",
"signature",
"purchaseData",
"price",
"currency",
null,
this);
#endif
Verifique se você testou a chamada do servidor da área restrita da Apple:
#if UNITY_IOS && !UNITY_EDITOR
AppsFlyeriOS.validateAndSendInAppPurchase(
"productIdentifier",
"price",
"currency",
"tranactionId",
null,
this);
#endif
Parâmetros do método
Parâmetro | Descrição |
---|---|
String publicKey | Chave pública do Google Developer Console |
Sequência de caracteres de assinatura |
Assinatura da transação;retornada pela Google API quando uma compra é concluída |
Sequência de caracteres purchaseData |
Produto comprado no formato JSON; retornado pela Google API quando uma compra é concluída |
Sequência de caracteres de receita | Receita de evento in-app a ser relatada para a AppsFlyer |
Sequência de caracteres de moeda | Moeda do evento in-app a ser relatada para a AppsFlyer |
Dictionary<String, String> additionalParameters |
Parâmetros adicionais de eventos in-app que aparecem no campo event_value dos dados brutos do evento in-app |
Parâmetro | Descrição |
---|---|
Sequência de caracteres productIdentifier | Identificador do produto |
Sequência de caracteres de preço | Receita de evento in-app a ser relatada para a AppsFlyer |
Sequência de caracteres de moeda | Moeda do evento in-app a ser relatada para a AppsFlyer |
Dictionary<String, String> additionalParameters |
Parâmetros adicionais de eventos in-app queaparecem no campo event_value dos dados brutos do evento in-app |
Observação
Faça a chamada validateReceipt
para gerar um evento in-app af_purchase automaticamente.
Não envie um evento de compra depois de validar a compra. Isso resulta em relatórios de eventos duplicados.
5.4. Considerações sobre eventos in-app
- Nome do evento: máximo de 45 caracteres
- Valor do evento: não deve exceder 1000 caracteres - caso exceda, pode ser necessário restringi-lo.
- Possui suporte a caracteres não ingleses para eventos in-app (e outras APIs)
- Preços e receita:
- Use somente números e decimais como 5 ou 5.2
- Até 5 números após o decimal são permitidos. Por exemplo, 5.12345
5.5. Exemplos de registro de eventos in-app
Grave eventos in-app fazendo a chamada de SendEvent
e inclua o nome do evento e os parâmetros de valor.
Para mais detalhes, veja Eventos in-app avançados.
Exemplo: Como registrar um evento de compra in-app
Para obter uma lista abrangente de trechos de código prontos por vertical, consulte nosso guia sobre eventos avançados dentro do aplicativo por verticais.
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "2");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
purchaseEvent.Add(AFInAppEvents.CONTENT_ID, "092");
AppsFlyer.sendEvent (AFInAppEvents.PURCHASE, purchaseEvent);
5.6. Registro de eventos in-app offline
Às vezes, os usuários geram eventos in-app quando estão sem conexão com a internet. A AppsFlyer armazena o evento em cache e relata quando possível.
- O plugin envia eventos para os servidores da AppsFlyer e aguarda uma resposta.
- Se o plugin não receber uma resposta 200, o evento é armazenado em cache.
- Após receber o próximo 200 como resposta, o evento armazenado em cache é reenviado ao servidor.
- Se o cache armazena múltiplos eventos, eles são enviados ao servidor um após o outro.
Observação
O cache pode armazenar até 40 eventos.
- Apenas os primeiros 40 eventos offline são salvos.
- Todos os eventos offline que vierem posteriormente, até a próxima resposta 200, são descartados.
- No relatório raw data,
- Event time = quando um evento é enviado para a AppsFlyer após o dispositivo ficar online novamente.
- Não é o momento em que o evento ocorreu.
6. Deep link with OneLink
OneLink da AppsFlyer é a solução para atribuição multiplataforma: redirecionamentoe links diretos.
6.1. Detecção e redirecionamento de dispositivo
OneLink:
- Detecta o tipo de dispositivo (Android e iOS, desktop etc.) quando um usuário clica e, em seguida,
- redireciona o usuário para o destino correto: Google Play, loja de aplicativos do iOS, destinos fora da loja ou páginas da web.
Para implementar links de atribuição multi-plataformas e revisar os conceitos básicos de deep linking, consulte o guia de redirecionamento do OneLink .
6.2. Deep linking
Use o deep linking para direcionar usuários existentes a atividades específicas e conteúdo personalizado.
O proprietário do aplicativo e o desenvolvedor devem trabalhar juntos para configurar o deep linking com o OneLink:
- O proprietário do aplicativo deve acessar o painel da AppsFlyer
- O desenvolvedor deve acessar o aplicativo
6.3. Deferred deep linking
A ligação direta adiada permite fazer links diretos com novos usuários para direcioná-los a atividades específicas e conteúdo customizado com a primeira inicialização de uma instalação do aplicativo.
O link direto padrão também direciona os usuários para atividades específicas e conteúdo personalizado, mas um aplicativo já deve estar instalado no dispositivo do usuário.
Para configurar o deferred deep linking com o OneLink:
- O desenvolvedor precisa ter acesso à plataforma da AppsFlyer.
- A configuração da plataforma da AppsFlyer para deferred deep linking e deep linking padrão é a mesma.
- É necessário implementar lógica adicional ao aplicativo para fazer o deep linking dos usuários e oferecer a eles conteúdo personalizado após a instalação e a inicialização do aplicativo.
Confira ligação direta adiada para mais informações.
6.4. Obtenha dados de deep links
O plugin oferece dados de conversão ou engajamento após cada evento de instalação ou de deep linking. Use esses dados para personalizar o conteúdo ou o comportamento programático do aplicativo.
Para receber dados de deep links:
- Implemente callback
onAppOpenAttribution
(encontrado na classeIAppsFlyerConversionData
); ele recebe uma chamada do plugin da AppsFlyer. - Os parâmetros de OneLink/link de atribuição retornados acionam a abertura de um aplicativo.
- Analise os valores e aplique a lógica para acionar a página relevante do aplicativo.
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
Confira dados de deep linking para mais informações.
7. Obtenha dados de conversão
O acesso a dados de atribuição de usuário em tempo real está disponível para cada instalação. Use isso para aprimorar o engajamento do usuário, oferecendo:
- Conteúdo personalizado
- Enviando usuários para atividades específicas dentro de um aplicativo. Leia sobre deferred deep linking neste artigo.
Para obter os dados de conversão da AppsFlyer:
- Implemente o
IAppsFlyerConversionDatabase
. - Faça a chamada para o método
initSDK
usando esse trecho como último parâmetro. - Use o método
OnConversionDataSuccess
para redirecionar o usuário.
Consulte a referência para onConversionDataSuccess da API .
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
void Start()
{
/* AppsFlyer.setDebugLog(true); */
AppsFlyer.initSDK("devkey", "appID", this);
AppsFlyer.startSDK();
}
public void onConversionDataSuccess(string conversionData)
{
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
// add deferred deeplink logic here
}
public void onConversionDataFail(string error)
{
AppsFlyer.AFLog("onConversionDataFail", error);
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
public void onAppOpenAttributionFailure(string error)
{
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
8. Atribuição
Mensurar desinstalações
Mensure as taxas de desinstalação de usuários provenientes de diferentes fontes.
Para configurar a mensuração de desinstalação, consulte as instruções correspondentes ao sistema operacional.
- Faça o download do SDK Firebase Unity em https://firebase.google.com/docs/unity/setup .
- Importe o FirebaseMessaging.unitypackage para o seu projeto.
- Importe google-services.json para o projeto (obtido no console do Firebase)
Observação
O SDK Firebase Unity adiciona automaticamente receptores de manifesto.
- Adicione esse código à classe Unity que manipula o código da AppsFlyer:
using Firebase.Messaging; using Firebase.Unity;
- Adicione ao método Start():
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
- Adicione esse método:
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
{
#if UNITY_ANDROID
AppsFlyerAndroid.updateServerUninstallToken(token.Token);
#endif
}
Guia de desinstalação do Android
Aviso
Cenário: Implementação do SDK Unity Firebase.
Requisito:Não adicione a seguinte chamada de método para enableUninstallTracking (“SenderID”) se você adicionou o SDK Unity Firebase ao seu projeto.
Caso adicione, as consequências serão:
- O SDK Firebase Unity obterá o ID do remetente do arquivo google-services.json (que foi adicionado anteriormente).
- Como resultado, isso pode causar um aviso de depuração do Android.
Obtenha o token do seu dispositivo a partir do UnityEngine.iOS.NotificationServices.deviceToken.
Faça a chamada para esse método quando receber o token do dispositivo (problemas de conteúdo da guia).
AppsFlyer.registerUninstall("device_push_notification_token");
Exemplo:
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour, IAppsFlyerConversionData
{
private bool tokenSent;
void Start()
{
AppsFlyer.initSDK("devKey", "appID", this);
AppsFlyer.startSDK();
#if UNITY_IOS
UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound);
#endif
}
void Update()
{
#if UNITY_IOS
if (!tokenSent)
{
byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if (token != null)
{
AppsFlyeriOS.registerUninstall(token);
tokenSent = true;
}
}
#endif
}
}
Para mais detalhes, veja o Guia de Desinstalação do iOS
Configure dados personalizados adicionais
Para fazer a integração no nível do SDK com várias plataformas de parceiros externos (incluindo Segment, Adobe e Urban Airshop), é necessário usar a API setAdditionalData
.
Somente use essa API se o artigo de integração de parceiros declarar explicitamente que a API SetAdditionalData
é necessária.
Exemplo: códigosetAdditionalData
Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");
AppsFlyer.setAdditionalData(CustomDataMap);
9. Sessões
Personalizar tempo entre sessões
Por padrão, deve haver um intervalo mínimo de 5 segundos entre duas inicializações de aplicativos para que essas duas sessões sejam contabilizadas separadamente. Para definir o tempo mínimo entre as sessões:
AppsFlyer.setMinTimeBetweenSessions(custom_time_ins_seconds);
Atenção! Se você definir um valor alto para o tempo personalizado entre inicializações, isso pode gerar um impacto negativo nas APIS que dependem dos dados das sessões (como o deep linking).
Veja mais sobre como contar sessões de aplicativo.
Sessões em background para aplicativos utilitários
Indisponível no Unity.
10. Mídia própria
Corrija URLs encurtadas de deep links.
Alguns serviços de terceiros (como provedores de serviço de e-mail):
- Encurtam links em e-mails usando seus próprios domínios de registro de cliques.
- Permitem que você defina seus próprios domínios de registro de links.
Se o OneLink estiver envolvido em tais domínios, ele poderá limitar sua funcionalidade. Para não ter esse problema:
- Faça a chamada para a API
setResolveDeepLinkURLs
antes da inicialização do SDK. - A API obtém o OneLink dos domínios de cliques que geram a inicialização o aplicativo.
Cenário: três domínios de clique redirecionam para seu OneLink em https://mysubdomain.onelink.me/abCD.
Solução:
- Use a API
setResolveDeepLinkURLs
para obter o OneLink alcançado após os domínios de clique redirecionarem um usuário do aplicativo. - Este método de API recebe uma lista de domínios que são resolvidos pelo plugin.
- O código a seguir permite usar seu domínio de clique sem deixar de preservar a funcionalidade do OneLink:
Exemplo
AppsFlyer.setResolveDeepLinkURLs("example.com", "click.example.com");
Agora, use os dados deste OneLink para fazer links diretos e personalizar o conteúdo do usuário.
Registrar notificação push
Registre notificações push como parte de campanhas de retargeting.
Para registrar notificações push:
- Faça a chamada para o método
sendPushNotificationData
. - Esse método está dentro do método
onCreate
de cada atividade iniciada após clicar nesta notificação:
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.handlePushNotifications();
#endif
Para mais informações, leia sobre a mensuração de notificação push.
Atribuição de convites de usuário
Se os usuários de aplicativos existentes convidarem seus amigos e contatos para se tornarem novos usuários, essa pode ser uma fonte de crescimento.
Atribua e registre instalações originadas de convites de usuário dentro do aplicativo. Atribuição por convite de usuário.
Atribuição de promoções cruzadas
Aplicativos que possuem promoções cruzadas podem impulsionar instalações de aplicativo adicionais.
Atribua e registre instalações que vieram de campanhas de promoções cruzadas—promova um de seus aplicativos a partir de outro de seus aplicativos já utilizado por um de seus usuários. Atribuição de promoções cruzadas.
11. Identificadores de usuários
Obtenha o ID da AppsFlyer
Um ID da AppsFlyer é criado para cada nova instalação do aplicativo. Use o ID da AppsFlyer para:
- Enviar eventos in-app de servidor para servidor.
- Combiná-lo com os registros de usuário em seus sistemas de back-end.
- Mapear entradas ao mesclar dados das APIs pull e push .
Para obter o ID exclusivo da AppsFlyer:
string AppsFlyerUID = AppsFlyer.getAppsFlyerId();
Definir ID de usuário do cliente
Configure seu próprio ID de usuário exclusivo (CUID) e faça referência cruzada com um ID exclusivo da AppsFlyer.
CUID exclusivo:
- Aparece nos relatórios raw data da AppsFlyer.
- Pode ser usado em APIs de postback para referência cruzada com seus IDs internos.
Para definir o CUID, use:
AppsFlyer.setCustomerUserId("someId");
Boas práticas! Configure o CUID no início do fluxo do aplicativo—ele está associado apenas a eventos relatados após a configuração.
Faça a chamada para setCustomerUserID
antes de chamar startSDK
- Eventos registrados serão associados ao CUID.
- Dados relacionados aparecerão nos relatórios raw data para instalações e eventos.
AppsFlyer.setCustomerUserId("someId");
Obtenha o ID de usuário do cliente
Confira CUID para mais informações.
Atrase a inicialização do plugin para CustomerUserID
Defina o ID de usuário do cliente (CUID) e somente então inicialize o plugin. Isso é útil se você deseja que os dados de instalação e de eventos contenham seu CUID.
Veja as instruções relevantes do sistema operacional:
Aviso
Somente adie a configuração do CUIDse isso for adequado à sua lógica de negócios. Se você adiar a configuração do CUID, isso pode aumentar a chance de discrepâncias e pode expor seu aplicativo a tentativas de fraude.
Colete OAID
OAID é um dos identificadores de dispositivo exclusivos que permitem a atribuição.
Para coletar OAID:
Por padrão, o OAID é coletado automaticamente. Para optar por não coletar, faça a chamada AppsFlyerAndroid.setCollectoAid(false);
.
- Faça o download do AAR oferecido pela aliança MSA.
- Adicione o aar baixado à pasta Assets/Plugins/Android.
- Para dispositivos Huawei, adicione a lib 2hms-ads-identifier à pasta Assets/Plugins/Android.
- Acrescente appsflyer-oaid ao seu projeto. Isso pode ser feito através da inserção do aar à pasta Assets/Plugins/Android ou do valor abaixo a Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:
<androidPackage spec="com.appsflyer:oaid:5.2.0">
</androidPackage>
12. Privacidade do usuário
Recusa (opt-out)
Diferentes cenários, como problemas legais e de conformidade com a privacidade, podem levar a uma decisão de opt-out e interromper todos os registros (rastreamento)
Melhores práticas!Siga as instruções exatasdo cenário relevante para seu aplicativo.
Para interromper o rastreamento:
- Faça a chamada para StopSDKe defina como true.
AppsFlyer.stopSDK(true);
- O plugin para de funcionar e não se comunica mais com os servidores da AppsFlyer.
Para reativar o rastreamento: Faça a chamada para StopSDK e defina como false.
Atenção
Use a API StopSDK se quiser interromper completamente o rastreamento de um usuário de um determinado aplicativo. O uso da API afeta gravemente a atribuição, a coleta de dados e o mecanismo de deep linking.
Tornar anônimos os dados de usuários
Para tornar anônimo um usuário do aplicativo:
- Defina a API durante a inicialização do SDK
- Faça a chamada
AnonymizeUser
e defina como true.
AppsFlyer.anonymizeUser(true);
- Instalação de usuários do aplicativo, eventos e sessões se tornarão anônimos.
Para reiniciar o rastreamento: Faça a chamada AnonymizeUser
e defina comofalse.
Aviso
Fazer com que os usuários se tornem anônimos impacta gravemente suas informações de atribuição. Use essa opção somente em regiões que te impedem legalmente de coletar informações de seus usuários.Excluir parceiros da obtenção de dados
Em alguns casos, os anunciantes podem querer parar de compartilhar dados a nível do usuário com redes de anúncios/parceiros para determinados usuários. Os motivos para isso incluem:
- Políticas de privacidade como CCPA ou GDPR
- Mecanismos de opt-out para o usuário
- Concorrência com alguns parceiros (redes de anúncios, terceiros)
A AppsFlyer oferece dois métodos de API para interromper o compartilhamento de dados com alguns ou todos os parceiros:
- SetSharingFilter: usado por anunciantes para definir algumas (uma ou mais) redes/parceiros integrados para excluir da obtenção de dados.
- SetSharingFilterForAllPartners: usado por anunciantes para excluir todas as redes/parceiros integrados da obtenção de dados.
Esses métodos de filtragem possuem suporte a partir do SDK V5.4.1.
O método de filtragem deve ser chamado sempre que o SDK é inicializado e afeta a sessão toda. Se demorar para determinar se você precisa definir os filtros de compartilhamento, adie a inicialização do SDK.
Quando o método é ativado antes da primeira chamada startSDK :
- Os usuários de SRNs são atribuídos como orgânicos e seus dados não são compartilhados com parceiros integrados.
- Os usuários de redes de anúncios de cliques (não-SRNs) são atribuídos corretamente na AppsFlyer, mas não são compartilhados com as redes de anúncios por meio de postbacks, APIs, relatórios raw data ou por qualquer outro método.
Atualmente, os dados de desinstalação não podem ser filtrados usando esses métodos. No entanto, você pode parar de enviar eventos de desinstalação para parceiros usando suas páginas de configuração na AppsFlyer.
APIs para Android e iOS
InitSDK
Descrição |
Inicialize o plugin com a chave do desenvolvedor (dev key) e o ID do aplicativo. A chave do desenvolvedor é necessária para todos os aplicativos. O ID do aplicativo é necessária apenas para iOS. Se o seu aplicativo for apenas para Android, use nulo para o ID do aplicativo. O objeto do jogo contém a interface IAppsFlyerConversionData. |
Assinatura do método |
|
Exemplo |
|
startSDK
Descrição |
Uma vez que essa API é chamada, o SDK será iniciado, as sessões serão enviadas imediatamente e todas as transições de primeiro plano em segundo plano registrarão uma sessão. |
Assinatura do método |
|
Exemplo |
|
sendEvent
Descrição |
O registro de eventos in-app é realizado através da chamada sendEvent com os parâmetros de nome e valor do evento. |
Assinatura do método |
|
Exemplo |
|
stopSDK
Descrição |
Em alguns casos extremos, convém desativar todas as funções do SDK para reguladores e requisitos de compliance com a privacidade. Para fazer isso, use a API StopSDK. Uma vez chamado, o SDK não se comunica mais com os servidores da AppsFlyer e para de funcionar. |
Assinatura do método |
|
Exemplo |
|
isSDKStopped
Descrição |
A API StopSDK (booleano) estava definida como true? |
Assinatura do método |
bool isSDKStopped() |
Exemplo |
|
getSdkVersion
Descrição |
Obtenha a versão do SDK da AppsFlyer |
Assinatura do método |
|
Exemplo |
|
setIsDebug
Descrição |
Habilita logs de depuração |
Assinatura do método |
|
Exemplo |
|
setCustomerUserID
Descrição |
Definir o ID de usuário do cliente (CUID). |
Assinatura do método |
|
Exemplo |
|
setAppInviteOneLink
Descrição |
Definir o ID do modelo do OneLink usado para criar links de atribuição personalizados para convites de usuário. |
Assinatura do método |
|
Exemplo |
|
setAdditionalData
Descrição |
Acrescentar dados adicionais a serem enviados para plataformas de parceiros externos. |
Assinatura do método |
|
Exemplo |
|
setResolveDeepLinkURLs
Descrição |
Resolver o OneLink de domínios de clique. Saiba mais sobre como resolver URLs de links diretos encurtados. |
Assinatura do método |
|
Exemplo |
|
setOneLinkCustomDomain
Descrição |
Os anunciantes podem usar esse método para definir domínios do OneLink. |
Assinatura do método |
|
Exemplo |
|
setcurrencyCode
Descrição |
Use para eventos com receita. Aceita códigos de moeda ISO. |
Assinatura do método |
|
Exemplo |
|
recordLocation
Descrição |
Grava manualmente a localização do usuário |
Assinatura do método |
|
Exemplo |
|
anonymizeUser
Descrição |
Use durante a inicialização para explicitamente tornar anônima a instalação do usuário, os eventos e as sessões. Para torná-la visível novamente, mais uma vez faça a chamada AnonymizeUser, defina como false. |
Assinatura do método |
|
Exemplo |
|
getAppsFlyerId
Descrição |
Para obter o ID exclusivo da AppsFlyer para uma nova instalação. |
Assinatura do método |
|
Exemplo |
|
setMinTimeBetweenSessions
Descrição |
Por padrão, pelo menos 5 segundos devem decorrer entre 2 inicializações do aplicativo para que contem como sessões separadas. Defina um valor personalizado para o tempo mínimo necessário entre as sessões. |
Assinatura do método |
|
Exemplo |
|
setUserEmails
Descrição |
Defina e-mails do usuário e os criptografe. |
Assinatura do método |
|
Exemplo |
|
setHost
Descrição |
Defina um host personalizado |
Assinatura do método |
|
Exemplo |
|
getConversionData
Descrição |
Registre um listener de dados de conversão para permitir o acesso aos dados de atribuição do usuário em tempo real para cada nova instalação, diretamente no nível do SDK. Ao fazê-lo, ofereça aos usuários conteúdo personalizado ou envie-os para atividades específicas dentro do aplicativo, o que pode melhorar significativamente o engajamento deles com seu aplicativo. |
Assinatura do método |
|
Exemplo |
|
attributeAndOpenStore
Descrição |
Para atribuir o clique e iniciar a página do aplicativo na app store. |
Assinatura do método |
|
Exemplo |
|
recordCrossPromoteImpression
Descrição |
Para atribuir uma impressão, use a seguinte chamada de API. Certifique-se de usar o ID do aplicativo promovido da maneira como aparece no painel da AppsFlyer. |
Assinatura do método |
|
Exemplo |
|
generateUserInviteLink
Descrição |
A classe LinkGenerator cria a URL de convite de acordo com vários métodos setter, que permitem passar informações adicionais no clique. |
Assinatura do método |
|
Exemplo |
|
onAppOpenAttribution
Descrição |
Obtenha dados de deep linking quando um aplicativo for aberto através de um deep link. |
Assinatura do método |
|
Exemplo |
|
onAppOpenAttributionFailure
Descrição |
Obtém os erros ao captar dados de deep linking. |
Assinatura do método |
|
Exemplo |
|
onConversionDataSuccess
Descrição |
Método usado para obter dados de conversão. É útil para ligação direta adiada. Saiba mais.
|
Assinatura do método |
|
Exemplo |
|
onConversionDataFail
Descrição |
Corrija os erros quando há uma falha na obtenção de dados de conversão das instalações. |
Assinatura do método |
|
Exemplo |
|
onInviteLinkGenerated
Descrição |
Callback de sucesso para gerar URLs do OneLink. |
Assinatura do método |
|
Exemplo |
|
onInviteLinkGeneratedFailure
Descrição |
Callback de erro para gerar URLs do OneLink. |
Assinatura do método |
|
Exemplo |
|
didFinishValidateReceipt
Descrição |
Callback de sucesso para a API validateAndSendInAppPurchase. Para Android: callback retorna "Validar sucesso". |
Assinatura do método |
|
Exemplo |
|
didFinishValidateReceiptWithError
Descrição |
Callback de erro para validar recebimentos. |
Assinatura do método |
|
Exemplo |
|
setPhoneNumber
Descrição |
Usado para definir o número de telefone do usuário. |
Assinatura do método |
|
Exemplo |
|
setSharingFilterForAllPartners
Descrição |
Usado por anunciantes para excluir todas as redes/parceiros integrados da obtenção de dados. Saiba mais |
Assinatura do método |
|
Exemplo |
|
setSharingFilter
Descrição |
Usado por anunciantes para definir algumas (uma ou mais) redes/parceiros integrados para excluir da obtenção de dados.Saiba mais |
Assinatura do método |
|
Exemplo |
|
APIs do Android
updateServerUninstallToken
Descrição |
Transfira manualmente o Firebase Device Token para a mensuração de desinstalação. |
Assinatura do método |
|
Exemplo |
|
setImeiData
Descrição |
Para enviar explicitamente o IMEI para a AppsFlyer. |
Assinatura do método |
|
Exemplo |
|
setAndroidIdData
Descrição |
Para enviar explicitamente a ID do Android para a AppsFlyer. |
Assinatura do método |
|
Exemplo |
|
waitForCustomerUserId
Descrição |
Esse recurso garante que o SDK não comece a funcionar até que o customerUserID seja fornecido. |
Assinatura do método |
|
Exemplo |
|
setCustomerIdAndStartSDK
Descrição |
Para disponibilizar ao SDK o ID de usuário do cliente relevante e acionar o SDK para iniciar sua atividade normal. |
Assinatura do método |
|
Exemplo |
|
getOutOfStore
Descrição |
Obtenha o valor AF_STORE atual. |
Assinatura do método |
|
Exemplo |
|
setOutOfStore
Descrição |
Defina manualmente o valor AF_STORE. |
Assinatura do método |
|
Exemplo |
|
setCollectAndroidID
Descrição |
Optar por não participar da coleta de ID do Android. Se o aplicativo NÃO tiver o Google Play Services, o ID do Android será coletado pelo SDK. No entanto, os aplicativos com os serviços do Google Play devem evitar a coleta de ID do Android, pois isso viola a política do Google Play. |
Assinatura do método |
|
Exemplo |
|
setCollectIMEI
Descrição |
Optar por não participar da coleta de IMEI. Se o aplicativo NÃO tiver o Google Play Services, o IMEI do dispositivo será coletado pelo plugin. No entanto, os aplicativos com os serviços do Google Play devem evitar a coleta de IMEI, pois isso viola a política do Google Play. |
Assinatura do método |
|
Exemplo |
|
setIsUpdate
Descrição |
Defina manualmente que o aplicativo foi atualizado. |
Assinatura do método |
|
Exemplo |
|
setPreinstallAttribution
Descrição |
Especifique o nome do fabricante ou da fonte de mídia ao qual a pré-instalação é atribuída. |
Assinatura do método |
|
Exemplo |
|
isPreInstalledApp
Descrição |
Indicador booleano para pré-instalação pelo fabricante. |
Assinatura do método |
|
Exemplo |
|
getAttributionId
Descrição |
Obtenha a ID de atribuição do Facebook, se houver. |
Assinatura do método |
|
Exemplo |
|
handlePushNotifications
Descrição |
Receba notificações push registradas. |
Assinatura do método |
|
Exemplo |
|
validateAndSendInAppPurchase
Descrição |
API para verificação do servidor de compras dentro do aplicativo. Um evento af_purchase com os valores relevantes será enviado automaticamente se a validação for bem-sucedida. |
Assinatura do método |
|
Exemplo |
|
APIs do iOS
setShouldCollectDeviceName
Descrição |
Defina esse sinalizador como 'true' para coletar o nome do dispositivo atual (por exemplo, "Meu iPhone"). O valor padrão é false. |
Assinatura do método |
|
Exemplo |
|
setDisableCollectIAd
Descrição |
Opte por não participar das atribuições do Apple Search Ads. |
Assinatura do método |
|
Exemplo |
|
setUseReceiptValidationSandbox
Descrição |
Validação de recebimento de compra in-app no ambiente Apple (produção ou sandbox). O valor padrão é false. |
Assinatura do método |
|
Exemplo |
|
setUseUninstallSandbox
Descrição |
Defina esse sinalizador para testar a desinstalação no ambiente Apple (produção ou sandbox). O valor padrão é false. |
Assinatura do método |
|
Exemplo |
|
validateAndSendInAppPurchase
Descrição |
Para enviar e validar compras in-app, faça a chamada para esse método a partir do método processPurchase. |
Assinatura do método |
|
Exemplo |
|
registerUninstall
Descrição |
Registre-se para notificação remota e forneça à AppsFlyer o token do dispositivo push. |
Assinatura do método |
|
Exemplo |
|
handleOpenUrl
Descrição |
Usado para rastrear manualmente o deep linking. |
Assinatura do método |
|
Exemplo |
|
onOpenStoreLinkGenerated
Descrição |
Permite que você utilize o componente StoreKit para abrir a App Store enquanto permanece no contexto do seu aplicativo. Saiba mais. |
Assinatura do método |
|
Exemplo |
|
disableSKAdNetwork
Descrição |
Permite desativar a atribuição de SkadNetwork. Defina como "true" para desabilitar. |
Assinatura do método |
|
Exemplo |
|
waitForATTUserAuthorizationWithTimeoutInterval
Descrição |
Usado se você quiser solicitar autorização do usuário por meio de um pop-up antes de acessar dados relacionados ao aplicativo para gravar o usuário ou o dispositivo (por exemplo, IDFA). Se o usuário aceitar, o IDFA será passado para o SDK. O intervalo de tempo limite dá ao usuário um determinado período de tempo para optar pela coleta IDFA. Depois que o temporizador expira, o IDFA não é coletado. |
Assinatura do método |
|
Exemplo |
|