Versão atual do SDK da Unity: v4.18.0
Compatível com SDK do Android v4.8.18 e SDK do iOS v4.8.10
1. Visão geral
O SDK da AppsFlyer fornece a funcionalidade de instalação de aplicativos móveis e de acompanhamento de eventos para Android, iOS, Windows Phone e muitas outras plataformas de desenvolvimento móvel.
Você pode acompanhar instalações, atualizações e sessões, e também acompanhar eventos pós-instalação (incluindo compras no aplicativo, níveis de jogos, etc) para avaliar o ROI e os níveis de engajamento do usuário.
Os aplicativos móveis desenvolvidos na plataforma Unity podem desfrutar uma vez da integração do SDK da AppsFlyer e do acompanhamento de aplicativos gerados tanto em Android quanto iOS. O guia a seguir detalha como integrar o SDK da AppsFlyer no seu código Unity para seus aplicativos iOS e Android.
Nota
A AppsFlyer suporta integração com o Unity versão 5 ou superior
Importante!
Google Play Install Referrer API é suportado a partir da v 4.16.0 do plugin Unity. Se você quiser usar o novo Referrer API, atualize o plugin para a versão 4.16.0 ou superior.
Dica
- Os capítulos 2 e 3 são OBRIGATÓRIOS para implementar a integração de SDK BÁSICO, isto é, somente atribuição de instalações
- É ALTAMENTE RECOMENDÁVEL implementar o capítulo Acompanhamento de eventos in-app
- A implementação do restante dos recursos descritos é OPCIONAL, embora talvez você precise de algum deles dependendo da lógica de negócios de seu aplicativo. Por exemplo, acompanhamento de receitas ou obtenção de dados de conversão na primeira inicialização pode ser fundamental para o fluxo de seu aplicativo
2. Início rápido
2.1 Fazendo o download do plugin Unity da AppsFlyer
Você pode encontrar o plugin no Github aqui: https://github.com/AppsFlyerSDK/Unity
Abaixo apresentamos as instruções de integração para usar o plugin Unity da AppsFlyer.
2.2 Instalando o plugin
Abaixo apresentamos as instruções de instalação do plugin da AppsFlyer:
- Importe o AppsFlyerUnityPlugin.unitypackage para o seu projeto Unity.
- Vá para Recursos >> Importar Pacote >> Pacote Personalizado
- Selecione o arquivo AppsFlyerUnityPlugin.unitypackage.
2.3 Configuração obrigatória para Android e iOS
Configuração para Android
Configurando permissões o receptor AF no AndroidManifest.xml:
<!-- receiver should be inside the <application> tag -->
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<!-- Mandatory permission: -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
Definindo as permissões necessárias
O AndroidManifest.xml inclui a seguinte permissão:
<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" />
Configurando o BroadcastReceiver no AndroidManifest.xml
As duas opções a seguir estão disponíveis para implementar o receptor de broadcast da referência de instalação:
Se você não tiver um receptor ouvindo no INSTALL_REFERRER
, no AndroidManifest.xml, adicione o seguinte receptor dentro da tag do aplicativo:
<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Configuração para o iOS
Estruturas e bibliotecas vinculadas
Após criar o projeto no Unity para o xCode, você deve adicionar Security.Framework às Estruturas e bibliotecas vinculadas do xCode se a estrutura não tiver sido adicionada anteriormente.
Anúncios do Apple Search do iOS
Adicione o seguinte:
- AdSupport.framework
- A AppsFlyer coleta o IDFA somente se você incluir essa estrutura. Se essa estrutura não for adicionada, você não consegue acompanhar o Facebook, o Twitter e a maioria das outras redes de anúncios.
- iAd.framework
-
É altamente recomendável adicionar essa estrutura ao seu projeto de aplicativo, já que ela é obrigatória para acompanhar os anúncios do Apple Search.
3. Inicialização do SDK
Nos métodos Start/Init defina a Dev key da AppsFlyer e os IDs dos aplicativos usados pelo iTunes e Google Play. Observe que você precisa definir o ID do aplicativo iOS com dígitos apenas, sem o prefixo "id".
Adicione o seguinte código:
void Start () {
/* Mandatory - set your AppsFlyer’s Developer key. */
AppsFlyer.setAppsFlyerKey ("YOUR_APPSFLYER_DEV_KEY");
/* For detailed logging */
/* AppsFlyer.setIsDebug (true); */
#if UNITY_IOS
/* Mandatory - set your apple app ID
NOTE: You should enter the number only and not the "ID" prefix */
AppsFlyer.setAppID ("YOUR_APP_ID_HERE");
AppsFlyer.trackAppLaunch ();
#elif UNITY_ANDROID
/* Mandatory - set your Android package name */
AppsFlyer.setAppID ("YOUR_ANDROID_PACKAGE_NAME_HERE");
/* For getting the conversion data in Android, you need to add the "AppsFlyerTrackerCallbacks" listener.*/
AppsFlyer.init ("YOUR_APPSFLYER_DEV_KEY","AppsFlyerTrackerCallbacks");
#endif
}
void Start () {
/* Mandatory - set your AppsFlyer’s Developer key. */
AppsFlyer.setAppsFlyerKey ("YOUR_APPSFLYER_DEV_KEY");
/* For detailed logging */
/* AppsFlyer.setIsDebug (true); */
#if UNITY_IOS
/* Mandatory - set your apple app ID
NOTE: You should enter the number only and not the "ID" prefix */
AppsFlyer.setAppID ("YOUR_APP_ID_HERE");
AppsFlyer.trackAppLaunch ();
#elif UNITY_ANDROID
/* Mandatory - set your Android package name */
AppsFlyer.setAppID ("YOUR_ANDROID_PACKAGE_NAME_HERE");
AppsFlyer.init ("YOUR_APPSFLYER_DEV_KEY");
#endif
}
Importante!
- Para o Android, AppsFlyer.init inclui chamada para trackAppLaunch. Portanto, não chame trackAppLaunch na compilação Android do plugin Unity.
- No iOS, a resposta dos dados de conversão é acionada na classe AppsFlyerTrackerCallbacks.cs.
4. Acompanhamento de eventos no aplicativo
Eventos no aplicativo fornecem insights sobre o que está acontecendo em seu aplicativo. É aconselhável investir tempo para definir os eventos que deseja avaliar para permitir que o acompanhamento do ROI (Retorno sobre o investimento) e do LTV (Valor de vida útil).
O acompanhamento de eventos no aplicativo é realizado chamando trackRichEvent
com o nome do evento e os parâmetros de valor. Consulte a documentação Eventos in-app para mais detalhes.
Nota
Um nome de evento no aplicativo não deve ultrapassar 45 caracteres. Nomes de eventos com mais de 45 caracteres não aparecem no painel, mas apenas nos Dados brutos e nas APIs de pull e push.
Exemplo de evento de acompanhamento:
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add ("af_currency", "USD");
purchaseEvent.Add ("af_revenue", "0.99");
purchaseEvent.Add ("af_quantity", "1");
AppsFlyer.trackRichEvent ("af_purchase", purchaseEvent);
Nota
A AppsFlyer suporta caracteres não pertencentes ao Inglês com eventos no aplicativo, ou com qualquer outra API de SDK, começando da versão 4.15.1 do SDK para Unity.
5. Acompanhamento de links diretos (deep linking)
Para os links diretos, siga as instruções conforme seu sistema operacional.
<activity android:name="com.appsflyer.GetDeepLinkingActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_scheme" />
</intent-filter>
</activity>
Siga o Guia de integração do iOS nativo.
OBSERVAÇÃO:
O plugin do Unity utiliza um AppController com o sinalizador IMPL_APP_CONTROLLER_SUBCLASS. Se o seu projeto contiver plugins adicionais que utilizam esse sinalizador, você deve mesclar todo o código em um AppController.
6. Acompanhamento de receitas
Use o parâmetro de evento AFInAppEvents.REVENUE
para contabilizar receitas como parte de um evento no aplicativo. Você pode preenchê-lo com qualquer valor numérico, positivo ou negativo.
Nota
O AFInAppEvents.REVENUE
(equivalente a usar af_revenue
) é o ÚNICO parâmetro de evento que é considerado na AppsFlyer como receita real nos dados brutos e no painel. Para mais detalhes, clique aqui.
Exemplo
Evento de receita no aplicativoAppsFlyer.trackRichEvent(AFInAppEvents.LEVEL_ACHIEVED, new Dictionary<string, string>(){
{AFInAppEvents.CONTENT_ID, "1234567"},
{AFInAppEvents.CONTENT_TYPE, "category_a"},
{AFInAppEvents.REVENUE, "1.99"},
{AFInAppEvents.CURRENCY, "USD"}
});
Importante!
NÃO formate o valor de receita de forma alguma. Ele não deve conter separadores de vírgula, símbolo de moeda ou texto. Um evento de receita deve ser semelhante a 1234.56, por exemplo.
Acompanhamento de receitas negativas
Se você precisar acompanhar receitas negativas, por exemplo, quando um usuário cancela uma compra ou recebe um reembolso, você pode enviar receitas negativas.
AppsFlyer.trackRichEvent(AFInAppEvents.LEVEL_ACHIEVED, new Dictionary<string, string>(){
{AFInAppEvents.CONTENT_ID, "1234567"},
{AFInAppEvents.CONTENT_TYPE, "category_a"},
{AFInAppEvents.REVENUE, "-1.99"},
{AFInAppEvents.CURRENCY, "USD"}
});
Nota
Observe o seguinte no código abaixo:
- O valor da receita é precedido por um sinal de menos.
- O nome do evento tem um valor único de "cancel_purchase" – para permitir que você identifique eventos de receitas negativas no painel e relatórios de dados brutos
7. Obter dados de conversão
A AppsFlyer permite que você acesse os dados de conversão dos usuários em tempo real diretamente no nível do SDK. Isso possibilita que você personalize a página inicial que um usuário visualiza na primeira vez em que o aplicativo é aberto após uma nova instalação do aplicativo.
Para carregar os dados de conversão da AppsFlyer dos seus servidores:
- Adicione um
GameObject
vazio. - Anexe-o ao AppsFlyerTrackerCallbacks.cs que está incluído no projeto (você deve dar o nome de AppsFlyerTrackerCallbacks a esse gameobject).
/*Para obter os dados de conversão no Android, você precisa adicionar este listener. to the init() method*/
AppsFlyer.init ("YOUR_DEV_KEY","AppsFlyerTrackerCallbacks");
No Android, você pode mover os métodos do AppsFlyerTrackerCallbacks.cs para outra classe e chamar essa classe em seu listener.
Você deve usar exatamente os mesmos namespaces do método que aparece no AppsFlyerTrackerCallbacks
.
/*Para obter os dados de conversão no Android, você precisa adicionar este listener.AppsFlyer.loadConversionData("AppsFlyerTrackerCallbacks");
No Android, você pode mover os métodos do AppsFlyerTrackerCallbacks.cs para outra classe e chamar essa classe em seu listener.
Você deve usar exatamente os mesmos namespaces do método que aparece no AppsFlyerTrackerCallbacks
.
/* Para obter os dados de conversão. Isso é acionado no arquivo AppsFlyerTrackerCallbacks.cs */
AppsFlyer.getConversionData ();
Exemplo da classe AppsFlyerTrackerCallbacks.cs (implemente sua lógica neste método) -
public void didReceiveConversionData(string conversionData) {
print ("AppsFlyerTrackerCallbacks:: got conversion data = " + conversionData);
}
8. Identificadores de usuários
Obter ID de dispositivo da AppsFlyer
A identificação de dispositivo única da AppsFlyer é criada para cada nova instalação de um aplicativo. Use a seguinte API para obter a identificação única da AppsFlyer:
public String getAppsFlyerId();
Exemplo de uso:
string AppsFlyerUID = AppsFlyer.getAppsFlyerId();
Definir ID de usuário cliente
Defina a identificação do usuário conforme usada pelo aplicativo.
Para definir a identificação do usuário, chame o método a seguir:
AppsFlyer.setCustomerUserID("someId");
Nota
A customerUserID
DEVE ser definida antes do trackAppLaunch/init. Recomenda-se definir sua identificação de usuário cliente o quanto antes, pois ela é associada apenas a eventos relatados após sua configuração. A ID de usuário cliente também pode ser usada para concluir integrações com plataformas analíticas como Mixpanel e Swrve.
Importante!
Para iOS – certifique-se de definir o ID de usuário cliente sempre que o aplicativo for inicializado, antes de chamar trackAppLaunch
Para mais informações sobre ID de usuário cliente, clique aqui.
Definir o e-mail do usuário
Google Advertising ID
A partir da versão 4.8.0 do SDK, a AppsFlyer coleta automaticamente a google_advertising_id
. O requisito para coletar esse código de publicidade do Google é relevante apenas para as versões 4.7.X ou inferiores do SDK.
IMEI e Android ID
Por padrão, o IMEI e o Android ID não são coletados pelo SDK se a versão do SO for superior à KitKat (4.4) e se o dispositivo tiver o Google Play Services (nas versões 4.16.4 ou anterior do SDK do Unity o aplicativo específico exigia GPS).
Para explicitamente enviar essas IDs à AppsFlyer, os desenvolvedores podem usar as seguintes APIs:
AppsFlyer.setAndroidIdData(string)
AppsFlyer.setImeiData(string)
Se o aplicativo NÃO tiver o Google Play Services, o SDK coleta o IMEI e o Android ID. Contudo, aplicativos com Google Play Services devem evitar a coleta de IMEI, pois isso é uma violação da política do Google Play.
Os desenvolvedores podem cancelar a colera de IMEI e Android ID usando estas APIs:
AppsFlyer.setCollectAndroidID(bool)
AppsFlyer.setCollectIMEI(bool)
Aviso
Pelo menos um identificador de dispositivo, GAID, Android ID ou IMEI, DEVE ser coletado para permitir atribuição correta.
IDFA e IDFV
A AppsFlyer coleta automaticamente o IDFA (identificador para anunciantes) e o IDFV (identificador para fornecedores) se o AdSupport.framework estiver incluído no aplicativo.
9. Recursos opcionais
Medir desinstalações
Para a Medição de desinstalações, siga as instruções conforme seu sistema operacional.
2. Importe FirebaseMessaging.unitypackage para o projeto.
3. Importe google-services.json para o projeto (obtido no console do Firebase)
Nota
Os receptores do manifesto devem ser automaticamente adicionados ao SDK do Firebase do Unity.
4. Na classe do Unity que está processando o código da AppsFlyer, adicione o seguinte:
using Firebase.Messaging;
using Firebase.Unity;
5. Adicione ao método Start():
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
6. Adicione o seguinte método:
public void OnTokenReceived
(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
AppsFlyer.updateServerUninstallToken (token.Token);
}
Aviso
Os usuários que implementam o SDK do Firebase do Unity não devem adicionar a seguinte chamada de método para enableUninstallTracking(“SenderID”), já que o SDK do Firebase obterá o identificador do remetente do arquivo google-services.json que acionamos anteriormente. Adicionar esse método pode ocasionar um aviso de depuração do Android.
Importante!
O Firebase Cloud Messaging (FCM) é a nova versão do GCM: ele herda a infraestrutura confiável e escalável do GCM, além de novos recursos. Se você estiver integrando o envio de mensagens em um novo aplicativo, comece com o FCM. É altamente recomendável que os usuários do GCM façam a atualização para o FCM a fim de se beneficiarem hoje e no futuro dos novos recursos do FCM.
Adicione estas linhas ao seu manifesto:
Permissões:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="android.appsflyer.sampleapp.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="android.appsflyer.sampleapp.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Nota
Você deve substituir android.appsflyer.sampleapp
pelo identificador do pacote do seu aplicativo.
Receptor:
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
Chame este método:
AppsFlyer.setGCMProjectNumber("Your_GCM_Project_Number");
O número do Projeto GCM é obtido pelo seu console de desenvolvedor do Google.
Para mais detalhes, consulte nosso Guia de desinstalação do Android
AppsFlyer.registerUninstall("device_push_notification_token");
Você pode obter o token do seu dispositivo a partir de: UnityEngine.iOS.NotificationServices.deviceToken.
Exemplo:
void Start () {
// register to push notifications
UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound);
Screen.orientation = ScreenOrientation.Portrait;
} void Update () {
if (!tokenSent) { // tokenSent needs to be defined somewhere (bool tokenSent = false)
byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if (token != null) {
AppsFlyer.registerUninstall (token);
tokenSent = true;
}
}
}
Para mais detalhes, consulte nosso Guia de desinstalação do iOS
Acompanhamento das notificações por push
A AppsFlyer permite que você avalie notificações por push como parte de uma campanha de redirecionamento.
handlePushNotification(Dictionary<string, string> payload)
O payload de dados deve incluir um objeto: af
com a string de chave-valor relevante:
Exemplo:
{
"data":{
"score":"5x1",
"time":"15:10",
"af":{
"c":"test_campaign",
"is_retargeting":"true",
"pid":"push_provider_int"
}
}
}
// with deep-linking
{
"data":{
"score":"5x1",
"time":"15:10",
"click_action":"com.example.someAction",
"af":{
"c":"test_campaign",
"is_retargeting":"true",
"pid":"push_provider_int"
}
}
}
Nota
Para mais informações sobre medição de notificações por push, leia aqui.
Acompanhamento de promoções cruzadas
A AppsFlyer permite que você acompanhe e atribua instalações originadas de uma promoção cruzada de um de seus aplicativos dentro do aplicativo atual do usuário. Aplicativos de promoções cruzadas podem ser um importante fator de crescimento para impulsionar novas instalações para seus aplicativos.
Para mais detalhes, consulte o artigo Acompanhamento de promoção cruzada aqui.
Acompanhamento de convites de usuários
A AppsFlyer permite que você acompanhe e atribua instalações originadas de convites de usuários dentro de seu aplicativo. Permitir que seus usuários existentes convidem amigos e contatos como novos usuários do seu aplicativo pode ser um fator de crescimento fundamental para o seu aplicativo.
Para mais detalhes, consulte o artigo Acompanhamento de convites de usuários aqui.
Definir código de moeda
AFInAppEvents.CURRENCY
não for enviado como parte de um evento no aplicativo.
USD é o valor padrão. Você pode encontrar códigos de moeda ISO aceitáveis aqui.
Use a seguinte API para definir o código de moeda:
public void setCurrencyCode(String currencyCode);
Exemplo de uso:
setCurrencyCode(string currencyCode)
Validação de instalações no aplicativo
Para Validação do recebimento de compras no aplicativo, siga as instruções de acordo com seu sistema operacional.
//Para obter os callbacks
//AppsFlyer.createValidateInAppListener ("AppsFlyerTrackerCallbacks",
"onInAppBillingSuccess", "onInAppBillingFailure");
AppsFlyer.validateReceipt(string publicKey, string purchaseData,
string signature, string price, string currency, Dictionary additionalParametes);
AppsFlyer.createValidateInAppListener ("AppsFlyerTrackerCallbacks", "onInAppBillingSuccess", "onInAppBillingFailure");
(A variável purchaseData deve ter o JSON original da compra).
Certifique-se de fazer o teste em relação à chamada do servidor da área restrita da Apple:
AppsFlyer.setIsSandbox(true);
AppsFlyer.validateReceipt(string productIdentifier, string price, string currency,
string transactionId, Dictionary additionalParametes);
A resposta de compra validada é acionada na classe AppsFlyerTrackerCallbacks.cs
Anonimizar dados de usuários
Use esta API durante a inicialização do SDK para anonimizar explicitamente as instalações, eventos e sessões de um usuário:
public void setDeviceTrackingDisabled(boolean isDisabled);
Exemplo de uso:
AppsFlyer.setDeviceTrackingDisabled(true);
O acompanhamento pode ser reiniciado chamando deviceTrackingDisabled
novamente definido como falso.
Aviso
A exclusão de usuários prejudica GRAVEMENTE suas informações de atribuição.Use essa opção APENAS em regiões que legalmente impedem você de coletar informações de seus usuários.
Personalizar o tempo entre sessões
No entanto, é possível usar a seguinte API para definir seu valor personalizado para o tempo mínimo necessário entre sessões:
setMinTimeBetweenSessions(int seconds)
Exemplo de Utilização:
AppsFlyer.setMinTimeBetweenSessions(10);
Observe que definir um alto valor para o tempo personalizado entre inicializações pode gerar um impacto negativo nas APIs que dependem de dados de sessões, como links diretos.
Sessões em segundo plano para aplicativos utilitários
Atualmente indisponível no Unity.
Acompanhar aplicativos fora da loja
Nota
O Google Play é a loja padrão. Se você estiver publicando seu aplicativo apenas no Google Play, ignore esta seção.
Para acompanhar instalações fora do Google Play, defina o canal/loja no AndroidManifest.xml do aplicativo com um único canal ou qualquer nome de loja para cada APK. O valor do CANAL diferencia maiúsculas de minúsculas.
Exemplos:
<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />
Nota
Você deve definir o valor do CANAL no painel da AppsFlyer ao configurar o aplicativo.
Coloque a tag de meta-dados antes da tag </application>.
Para mais detalhes sobre como acompanhar as instalações para aplicativos fora da loja, leia aqui.
Exclusão (opt-out)
Em alguns casos extremos você pode querer encerrar todos os acompanhamentos de SDK devido à conformidade legal e de privacidade. Você pode fazer isso com a API isStopTracking. Após a execução desta API, nosso SDK não se comunicará mais com nossos servidores e parará de funcionar.
AppsFlyer.stopTracking(true);
Em qualquer evento, o SDK pode ser reativado chamando a mesma API passando o valor "false".
Há vários cenários diferentes para a exclusão (opt-out) de usuários. É altamente recomendado seguir as instruções exatas do cenário relevante para seu aplicativo.
Aviso
Use esta API somente quando quiser ignorar totalmente este usuário em todo e qualquer acompanhamento. Usar esta API afeta GRAVEMENTE sua atribuição, coleta de dados e mecanismo de links diretos.
Configuração de dados personalizados adicionais
A API setAdditionalData é necessária para integrar-se ao nível do SDK com várias plataformas externas, incluindo Segment, Adobe e Urban Airship. Use esta API somente se o artigo de integração da plataforma afirmar especificamente que a API setAdditionalData é necessária.
Veja a seguir um exemplo de código para a implementação do setAdditionalData no Unity:
Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");
AppsFlyer.setAdditionalData(CustomDataMap);
Atribuição para aplicativos pré-instalados
Apenas no Android
Você pode configurar de forma programática uma fonte de mídia pré-instalada, do Unity, usando a seguinte API:
setPreinstallAttribution(string MediaSource, string Campaign, string Site_Id);
Para mais detalhes sobre implementações nativas, clique aqui.
Importante!
Ao usar o SDK do Unity da AppsFlyer, evite
PlayerPrebs.DeleteAll()
10. Testando sua integração
Para instruções sobre o teste das suas integrações de acordo com seu sistema operacional, clique em Teste do Android ou Teste do iOS.
Agora, você pode começar a acompanhar as fontes de mídia com as quais você trabalha.
11. Erros conhecidos
ProGuard
Se você estiver utilizando o ProGuard para Android e se deparar com um aviso relacionado à nossa classe AFKeystoreWrapper
, adicione o seguinte código ao seu arquivo de regras do ProGuard:
-keep class com.appsflyer.** { *; }
IL2CPP
Para excluir nosso SDK do Managed bytecode stripping com IL2CPP, adicione o seguinte código ao link.xml:
<linker>
<assembly fullname="mscorlib">
<type fullname="AppsFlyer.*" preserve="all"/>
</assembly>
…
</linker>
12. Projeto de exemplo do Unity
Para visualizar um projeto de exemplo do Unity, clique aqui.
Comentários
Por favor, entrar para comentar.