Integração do SDK da AppsFlyer - Unity

Official_unity_logo.png

Versão atual do SDK do Unity:  v4.16.4
Compatível com Android SDK v4.8.11 e iOS SDK v4.8.4

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 SO 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.

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:

  1. Importe o AppsFlyerUnityPlugin.unitypackage para o seu projeto Unity.
  2. Vá para Recursos >> Importar Pacote >> Pacote Personalizado
  3. 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:

Usando um receptor de broadcast único Usando um receptor de broadcast múltiplo

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>

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:

Plugin Unity 4.15.1 e superior Plugin Unity 4.14.3 e inferior
void Start () {
/* Mandatory - set your AppsFlyer’s Developer key. */
AppsFlyer.setAppsFlyerKey ("YOUR_APPSFLYER_DEV_KEY_HERE");
/* 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_DEV_KEY","AppsFlyerTrackerCallbacks");
#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 trackEvent com o nome do evento e os parâmetros de valor. Consulte a documentação Eventos no aplicativo  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

Para os links diretos, siga as instruções conforme seu sistema operacional.

Android iOS
Adicione o seguinte ao seu arquivo de manifesto:

<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>

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

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:

  1. Adicione um GameObject vazio.
  2. Anexe-o ao AppsFlyerTrackerCallbacks.cs que está incluído no projeto (você deve dar o nome de AppsFlyerTrackerCallbacks a esse gameobject).
Plugin Unity > 4.15.1 para Android Plugin Unity < 4.14.3 para Android iOS
/*Para obter os dados de conversão no Android, você precisa adicionar este listener. ao 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.

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.

Para mais informações sobre ID de usuário cliente, clique aqui.

Definir o e-mail do usuário

Atualmente indisponível no Unity.

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

Acompanhamento de desinstalações

Para Desinstalação, siga as instruções conforme seu sistema operacional.

Android - Firebase Android - GCM iOS
1.  Baixe o SDK do Firebase do Unity em: https://firebase.google.com/docs/unity/setup
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.

Acompanhamento de 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 

Para realizar ações de cross-promotion com o SDK do Unity (ou qualquer outra plataforma não nativa) implemente o seguinte.

Acompanhamento de convites de usuários

Atualmente indisponível no Unity.

Definir código de moeda 

Você pode definir um código de moeda global usando a API abaixo, além de códigos de moeda específicos que podem ser usados como parte de cada evento no aplicativo enviado para a AppsFlyer. O código de moeda global é usado quando af_currency

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.

Chamada Android Chamada do Listener (apenas no Android) iOS
//Para obter os callbacks
//AppsFlyer.createValidateInAppListener ("AppsFlyerTrackerCallbacks", 
"onInAppBillingSuccess", "onInAppBillingFailure"); AppsFlyer.validateReceipt(string publicKey, string purchaseData,
string signature, string price, string currency, Dictionary additionalParametes);

A resposta de compra validada é acionada na classe AppsFlyerTrackerCallbacks.cs

Anonimizar dados de usuários

A AppsFlyer fornece um método para anonimizar ítens identificadores dos usuários em suas análises. Esse método está em conformidade com os mais recentes requisitos de privacidade e cumpre as políticas de privacidade e dados do Facebook. O padrão é NÃO, ou seja, a anonimização NÃO está habilitada por padrão.

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

Atualmente indisponível no Unity.

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 do 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 deixará de enviar informações para a AppsFlyer.

AppsFlyer.stopTracking(true);

Em qualquer evento, o SDK pode ser reativado chamando a mesma API, mas passando o valor "false".

 Aviso

Use esta API somente quando quiser ignorar totalmente este usuário em todo e qualquer acompanhamento. Usar esta API afeta SIGNIFICATIVAMENTE os relatórios e o processo de atribuição.

Configuração de dados 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);

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.

11. Projeto de exemplo do Unity

Para visualizar um projeto de exemplo do Unity, clique aqui.

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 3

Comentários

0 comentário

Por favor, entrar para comentar.