Integração do SDK da AppsFlyer - Android

  • Anunciantes
  • Desenvolvedores

android.pngVersão do SDK:  4.8.18 (Notas de lançamento)

1. Visão geral

O SDK da AppsFlyer fornece instalação de aplicativos e funcionalidade para acompanhamento de eventos. Nós desenvolvemos um SDK que é altamente robusto (mais de 7 bilhões de instalações de SDK até hoje), seguro, leve e muito simples de incorporar.

Você pode acompanhar instalações, atualizações e sessões, e também acompanhar eventos nos aplicativos além da instalação (incluindo compras no aplicativo, níveis de jogos, etc) para avaliar o ROI e os níveis de engajamento do usuário.

 Importante!

O SDK para Android da AppsFlyer é compatível com sistema operacional Android versão 2.3 e superior.

O SDK também é compatível com plataformas baseadas em Android não móveis, como Smart TVs, incluindo o Fire TV da Amazon.

Para aplicativos desenvolvidos para o Fire TV da Amazon, use a Solução para acompanhamento fora da loja (out of store) da Appsflyer.

Se você estiver migrando do SDK para Android da AppsFlyer V.3.3.x, clique aqui.

 Dica

2. Início rápido

2.1 Download do SDK

Para fazer download do jar do SDK para Android mais recente, clique aqui.

Para verificar a integridade do download do SDK, clique aqui.

Para mais detalhes sobre o aplicativo de exemplo da AppsFlyer, clique aqui.

2.2 Incorporando o SDK ao aplicativo

Você pode integrar o SDK da AppsFlyer tanto automaticamente, usando o Gerenciamento de dependências do Gradle, ou manualmente, como um SDK.jar.

2.3 Adicionando o SDK ao seu projeto

A maneira mais simples de integrar o SDK ao seu projeto é usando o Gerenciamento de dependências do Gradle. Você pode encontrar informações sobre a versão aqui.

Se você não estiver usando o Gradle, baixe e adicione o AF-Android-SDK.jar ao class path do projeto.

Adicionando a dependência do SDK para Android da AppsFlyer:

  1.  Abra seu projeto (ou crie um novo) e, em seguida, abra your_app | build.gradle
  2.  Adicione-o ao nível de módulo /app/build.gradle antes das dependências:
repositories { 
    mavenCentral()
}
  1. Adicione a dependência de implementação com a última versão do SDK da AppsFlyer.
  2.  Adicione o código abaixo ao nível de módulo /app/build.gradle depois do repositório:
dependencies {
	implementation 'com.appsflyer:af-android-sdk:4+@aar'
	implementation 'com.android.installreferrer:installreferrer:1.0'
}

 Importante!

  • É necessária a dependência 'com.android.installreferrer:installreferrer:1.0' para suportar a Install referrer API do Google Play. Usar essa API melhora a precisão de atribuições, protege contra fraude de instalação e muito mais.
  • A API é compatível a partir da versão 4.8.6 e superior do SDK para Android da AppsFlyer. Se a atualização for a partir de uma versão mais antiga do SDK, conclua essa nova integração da dependência atualizando o método init do SDK.
  • Os desenvolvedores que estiverem usando ProGuard e quiserem usar a nova API de referenciador do Google, devem definir a seguinte regra do ProGuard: -dontwarn com.android.installreferrer
  • Os desenvolvedores que não estão usando o gradle build ou o aar, e querem usar a nova API de referenciador do Google, devem adicionar manualmentecom.android.installreferrer jar como arquivo, e certificar-se de adicionar a seguinte permissão: com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

2.4 Configurando as permissões necessárias

O AndroidManifest.xml deve incluir as seguintes permissões:

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

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

<application>
...
...

	<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
		<intent-filter>
			 <action android:name="com.android.vending.INSTALL_REFERRER" />
		 </intent-filter>
	</receiver>

...
...
</application>

 Dica

Se você receber o erro "Unresolved class SingleInstallBroadcastReceiver" após adicionar o receptor ao AndroidManifest.xml, certifique-se de montar o aplicativo primeiro.

3. Inicialização do SDK

A inicialização do SDK é concluída em duas etapas. Na primeira etapa, o DevKey é fornecido com um conversionDataListener opcional. Na segunda etapa, a chamada para startTracking indicará que todas as preparações foram concluídas (por exemplo, chamar setCustomerUserId) e o SDK pode começar a acompanhar todos os eventos.

Para inicializar o SDK, adicione o seguinte código à função onCreate() de seu aplicativo:

import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;

public class AFApplication extends Application {
   private static final String AF_DEV_KEY = "";
   @Override
   public void onCreate() {
       super.onCreate();
       AppsFlyerConversionListener conversionDataListener = 
       new AppsFlyerConversionListener() {
           ...
       };
       AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionDataListener, getApplicationContext());
       AppsFlyerLib.getInstance().startTracking(this);   }
}

 Nota

Como alternativa, você pode atrasar a chamada para ostartTracking e colocá-la dentro de qualquer função Activity OnCreate() relevante.

 Dica

A seguinte dependência: implementation 'com.android.installreferrer:installreferrer:1.0' E o getApplicationContext() enviado no seguinte método: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); são os pré-requisitos para reportar a Nova Referrer API do Google à AppsFlyer.

É possível acessar sua dev key pelo Painel da Appsflyer, na seção Configuração dentro das Configurações do aplicativo:

Essa API permite que a AppsFlyer detecte instalações, sessões e atualizações.

4. Acompanhamento de eventos no aplicativo

Eventos in-app fornecem insights sobre o que está acontecendo em seu aplicativo. É aconselhável investir tempo para definir os eventos que você deseja avaliar para permitir o acompanhamento do ROI (retorno sobre o investimento) e do LTV (valor de vida útil).

O acompanhamento de eventos in-app é realizado ao chamar trackEvent com o nome do evento e os parâmetros de valor. Consulte a documentação Eventos In-App para obter mais detalhes.

 Nota

Um nome de evento no aplicativo não deve ter mais que 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.

//context - use getApplicationContext()
//eventName is any string to define the event name.
//eventValues is a map of event parameters that comprise a rich event.  
public static void trackEvent(Context context, String eventName, Map eventValues);


Exemplo
: Evento no aplicativo de nível alcançado

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.LEVEL_ACHIEVED,eventValue);

Isso gera um evento do tipo af_level_achieved com os seguintes valores de evento:
{af_level: 9, af_score: 100}

 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.8.1 do SDK para Android.
  • Não adicione símbolos de moeda ou vírgulas aos números, pois os mesmos não são reconhecidos.

 Exemplo de uso

Map<String,Object> eventValues = new HashMap<>();
eventValues.put(AFInAppEventParameterName.REVENUE, 1200);
eventValues.put(AFInAppEventParameterName.CURRENCY, "JPY");
AppsFlyerLib.getInstance().trackEvent(this, AFInAppEventType.PURCHASE, eventValues);

5. Acompanhamento de links diretos

 Dica

É altamente recomendável ter links diretos integrados ao seu aplicativo. Links diretos são parte crucial de campanhas de redirecionamento, sendo altamente recomendável usá-los ao realizar essas campanhas.

Para cada atividade que pode ser usada para links diretos (incluindo a atividade principal, se necessário) adicione a seguinte linha ao onCreate():

AppsFlyerLib.getInstance().sendDeepLinkData(this);

Atividades que devem ser abertas por links diretos devem ter o filtro de intent abaixo nas definições da atividade no arquivo de manifesto. 

<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="yourUniquescheme" />
</intent-filter>


Scheme configurado correlaciona com o valor de af_dp que você inclui em seu link de acompanhamento.

Para receber seus dados de links diretos, você deve implementar o callback onAppOpenAttribution chamado pelo SDK da AppsFlyer.  Ele retorna os parâmetros de Onelink/link de acompanhamento utilizados para acionar a abertura do aplicativo. Em seguida, você pode analisar os valores e aplicar a lógica para acionar a página do aplicativo relevante.

void onAppOpenAttribution(Map<String,String> attributionData);

Para mais informações, clique aqui ou consulte a seção Obtenha dados de conversão deste artigo.

6. Acompanhamento de receitas

Use o parâmetro af_revenue (AFInAppEventParameterName.REVENUE) para contabilizar a receita como parte de um evento do aplicativo. Você pode preenchê-lo com qualquer valor numérico, positivo ou negativo.

 Nota

af_revenue é o ÚNICO parâmetro de evento que é contado na AppsFlyer como receita real nos dados brutos e painel. Para mais detalhes, clique aqui.

Exemplo: evento no aplicativo de receita

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , AFInAppEventType.PURCHASE , eventValue);

Isso gera um evento do tipo af_purchase com os seguintes valores de evento:

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

O evento de compra acima contém uma receita de $ 200, aparecendo como receita no painel. 

 Nota

Ao definir o código de moeda local do usuário para as compras no aplicativo, o código de moeda deve ser um código ISO 4217 de 3 caracteres. (o padrão é USD). 

Você pode definir o código de moeda para todos os eventos chamando o método a seguir: AppsFlyer.setCurrencyCode("GBP");

 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.

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,-200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , "cancel_purchase" , eventValue);

 Nota

Observe o seguinte no código abaixo:

  1. O valor da receita é precedido por um sinal de menos.
  2. 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 atribuição de usuário em tempo real para cada nova instalação, diretamente do nível de SDK. Isso permite que você personalize conteúdos para os usuários ou os direcione a atividades específicas dentro do aplicativo, o que pode melhorar consideravelmente o engajamento deles em seu aplicativo.

Para acessar os dados de conversão da AppsFlyer no SDK para Android, implemente o ConversionDataListener:

public interface AppsFlyerConversionListener {
       void onInstallConversionDataLoaded(Map<String,String> conversionData);
        void onInstallConversionFailure(String errorMessage);
}


Exemplo:

AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
  @Override
  public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
      for (String attrName : conversionData.keySet()) {
          Log.d(AppsFlyerLib.LOG_TAG, "attribute: " + attrName + " = " + conversionData.get(attrName));
      }
  }
  @Override
  public void onInstallConversionFailure(String errorMessage) {
      Log.d(AppsFlyerLib.LOG_TAG, "error getting conversion data: " + errorMessage);
  }
  @Override
  public void onAppOpenAttribution(Map<String, String> conversionData) {
  }
  @Override
  public void onAttributionFailure(String errorMessage) {
      Log.d(AppsFlyerLib.LOG_TAG, "error onAttributionFailure : " + errorMessage);
  }
});

8. Identificadores de usuários

Obter ID de dispositivo da AppsFlyer

A ID de dispositivo exclusiva da AppsFlyer é criada para cada nova instalação de um aplicativo. Use a seguinte API para obter a ID exclusiva da AppsFlyer:

public String getAppsFlyerUID(Context context);


Exemplo de uso:

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

Definir ID de usuário cliente

Definir sua própria ID de cliente lhe permite fazer uma referência cruzada a sua própria ID única com a ID única da AppsFlyer e as IDs de outros dispositivos. Essa ID está disponível nos relatórios CSV da AppsFlyer junto com APIs de postback para referência cruzada com suas IDs internas.

Para definir sua ID de usuário cliente:

public void setCustomerUserId(String id);

 

Exemplo de uso:

AppsFlyerLib.getInstance().setCustomerUserId("myId");

 Nota

Recomenda-se definir sua ID de usuário cliente o quanto antes, pois ela é associada apenas a eventos relatados após sua configuração. Se setCustomerUserId for chamado antes de chamar startTracking, você terá a ID de usuário cliente na exportação bruta para instalações e para eventos. Se for definida depois, você verá o valor apenas de eventos acompanhados após a chamada deste método.

A identificação do usuário cliente também pode ser usada para concluir integrações com plataformas analíticas como Mixpanel e Swrve.

 

Obtenção de ID do cliente (Customer User ID):

Para evitar a definição do valor de ID do cliente (Customer User ID) novamente após a primeira inicialização, verifique se o valor está vazio ou não usando

AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)

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

Definir o e-mail do usuário

A AppsFlyer lhe permite informar um ou mais endereços de e-mail associados ao dispositivo. Você deve coletar os endereços de e-mail e informá-los à AppsFlyer de acordo com seu método de criptografia requerido.

Os seguintes métodos de criptografia estão disponíveis: SHA1, MD5, SHA256 e plain.

Exemplo:

public void setUserEmails(String... emails);


Exemplo de uso:

AppsFlyerLib.getInstance().setUserEmails(AppsFlyerProperties.EmailsCryptType.MD5, "email1@domain.com","email2@domain.com", ….);

 Nota

As Informações de identificação pessoal (PII), como endereços de e-mail, não são retidas pela AppsFlyer, e essas informações não são apresentadas em relatórios. O objetivo de coletar esses dados é apenas para propósitos de postback à fonte de mídia.

Google Advertising ID

A partir da versão 4.8.0 do SDK, a AppsFlyer automaticamente coleta o google_advertising_id. O requisito para coletar o Google Advertising ID é 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 (no SDK versões 4.8.8 e anterior o aplicativo específico exigia GPS). 

Para enviar explicitamente esses IDs à AppsFlyer, os desenvolvedores podem usar as seguintes APIs e colocar antes do código startTracking:

AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE");
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE");

Se o aplicativo NÃO tiver o Google Play Services, coleta-se o IMEI e o Android ID pelo SDK. No entanto, aplicativos com Google Play Services devem evitar a coleta de IMEI, pois esta é uma violação da política do Google Play.

Os desenvolvedores podem cancelar a coleta de IMEI e Android ID usando estas APIs:

AppsFlyerLib.getInstance().setCollectIMEI(false);
AppsFlyerLib.getInstance().setCollectAndroidID(false);

 Aviso

Pelo menos um identificador de dispositivo, GAID, Android ID ou IMEI, DEVE ser coletado para permitir atribuição correta.

9. Recursos opcionais

Medir desinstalações

A AppsFlyer permite que você meça as taxas de desinstalações de usuários vindos de diferentes fontes.

Para concluir este processo de forma correta e completa, leia aqui.

Acompanhamento das notificações por push

A AppsFlyer permite que você avalie as notificações por push como parte de uma campanha de redirecionamento.

Para habilitar esse recurso, chame o método seguinte dentro do método onCreate de cada Atividade que será executada após clicar na notificação:

AppsFlyerLib.getInstance().sendPushNotificationData(this);

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"
      }
   }
}
{

{  
   "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 que o usuário possui. 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ções cruzadas 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 pode ser um importante fator de crescimento para seu aplicativo.

Para mais detalhes, consulte o artigo Acompanhamento de convites de usuários aqui.

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

AFInAppEventParameterName.CURRENCY

não é 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 da moeda:

public void setCurrencyCode(String currencyCode);

Exemplo de uso:

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

Validação de instalações no aplicativo

O SDK da AppsFlyer fornece verificação de servidor para compras no aplicativo. Para definir o acompanhamento de validação, chame o método validateAndTrackInAppPurchase dentro da função onActivityResult .

Essa chamada automaticamente gera um evento af_purchase no aplicativo.

public static void validateAndTrackInAppPurchase(Context context, 
String publicKey, String signature, String purchaseData, 
String price, String currency, HashMap<String, String> additionalParameters);

Essa chamada tem dois blocos callback: um para 'Sucesso' e outro para 'Falha' (por qualquer motivo, incluindo falha na validação).

AppsFlyerLib.getInstance().registerValidatorListener(this,new
     AppsFlyerInAppPurchaseValidatorListener() {
          public void onValidateInApp() {
              Log.d(TAG, "Purchase validated successfully");
          }
          public void onValidateInAppFailure(String error) {
              Log.d(TAG, "onValidateInAppFailure called: " + error);
          }
});


Exemplo de uso:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == 1001) {
       String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
       String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
       if (resultCode == RESULT_OK) {
           HashMap<String,String> event = new HashMap<>();
           event.put(AFInAppEventParameterName.PRICE,"9");
           AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(getApplicationContext(),publicKey, dataSignature, purchaseData, "3.00", "ILS", event);
       }
   }
} 

 Nota

Chamar validateAndTrackInAppPurchase automaticamente gera um evento in-app af_purchase. Não é necessário que você mesmo envie este evento.

Anonimizar dados de usuários

A AppsFlyer fornece um método para anonimizar identificadores de usuários específicos 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 Utilização:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

O acompanhamento pode ser reiniciado chamando deviceTrackingDisabled novamente definido como falso.

 Aviso

A anonimizaçã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 tempo entre sessões

Por padrão, deve haver um intervalo de, no mínimo, 5 segundos entre duas inicializações de aplicativos para contabilizar como duas sessões separadas (saiba mais sobre contabilização de 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:
AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

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 background para aplicativos utilitários

Se o seu aplicativo for um aplicativo utilitário sendo executado em background, você pode usar esta API no onCreate() da sua atividade:

public void reportTrackSession(Context context);


Exemplo de uso:

AppsFlyerLib.getInstance().reportTrackSession(context);

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 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 instalações de 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.

AppsFlyerLib.getInstance().stopTracking(true, context);

Há vários cenários diferentes para a exclusão de usuários. É altamente recomendado seguir as instruções exatas do cenário relevante para seu aplicativo.

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

 Importante

Não chame o trackAppLaunch se isStopTracking estiver definido como verdadeiro

Para começar a rastrear novamente assim que stopTracking estiver definido como falso, use a seguinte API do SDK:

AppsFlyerLib.getInstance().trackAppLaunch(getApplicationContext(), AF_DEV_KEY);

 Aviso

Use a API stopTracking 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.

Atrasar init do SDK para customerUserID

É possível atrasar a inicialização de SDK até customerUserID ser configurado. Este recurso garante que o SDK não comece a funcionar até que o customerUserID seja fornecido. Se esta API for usada, todos os eventos no aplicativo e quaisquer outras chamadas da API do SDK são descartados, até que o customerUserID seja fornecido e acompanhado.

Para indicar que o SDK deve atrasar a inicialização para a chamada de id de usuário cliente

AppsFlyerLib.getInstance().waitForCustomerUserId(true);

imediatamente antes do método init(). O resto da inicialização do SDK deve permanecer inalterado.

Uma vez que o customerUserID foi fornecido, chame

AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);

para fornecer o SDK com a id de usuário cliente relevante e acione o SDK para iniciar seu acompanhamento normal.

O código deve aparecer da seguinte maneira:
public class AFApplication extends Application {
   private static final String AF_DEV_KEY = ;
   @Override
   public void onCreate() {
       super.onCreate();
       AppsFlyerConversionListener conversionDataListener = 
       new AppsFlyerConversionListener() {
           ...
       };
       AppsFlyerLib.getInstance().waitForCustomerUserId(true); 
       AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
       AppsFlyerLib.getInstance().startTracking(isso);
       Faça sua mágica para obter o customerUserID / /... / / qualquer código AppsFlyer SDK invocado aqui será descartado //Call API a seguir uma vez que o customerUserID está disponível: AppsFlyerLib.getInstance () .setCustomerIdAndTrack ("customer_id", isto); }
}

 Aviso

Use essa API somente nos casos em que é adequada para a sua lógica de negócios. Usar esta API aumenta a chance de discrepâncias e pode tornar o aplicativo mais exposto à fraude.

Configuração de dados personalizados adicionais

A API setAdditionalData é necessária para integrar-se ao nível do SDK com várias plataformas de parceiros 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.
A seguir é dado um exemplo de código para a implementação de setAdditionalData no Android:

HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("custom_param_1","value_of_param_1");
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

Atribuição para aplicativos pré-instalados

Existem vários métodos disponíveis para atribuição do Android para aplicativos pré-instalados.

Para mais detalhes, clique aqui.

Configurando um listener de solicitação de acompanhamento

Se você deseja receber uma confirmação de que a solicitação de acompanhamento foi recebida com sucesso pelos servidores da AppsFlyer, é possível implementar o listener AppsFlyerTrackingRequestListener.

O método callback onTrackingRequestSuccess() é executado para cada resposta "200" a uma solicitação de atribuição feita pelo SDK.

O método callback onTrackingRequestFailure(String error) é executado para qualquer outra resposta e retorna a resposta como a sequência de caracteres de erro.

Exemplo de implementação

AppsFlyerLib.getInstance().startTracking(this.getApplication(),"devKey", myListener());
private AppsFlyerTrackingRequestListener myListener() {   
    return new AppsFlyerTrackingRequestListener() {  
        @Override public void onTrackingRequestSuccess() { 
            Log.d("Debug", "Got 200 response from server");    
        }   @Override public void onTrackingRequestFailure(String error) { 
            Log.d("Debug", error); 
            }   
        }; 
    }

10. Testando a integração do SDK

Para testar a integração do SDK antes e depois de enviá-lo à loja do Google Play, clique aqui.

Agora, você pode começar a acompanhar as fontes de mídia com as quais você trabalha.

11. Erros conhecidos

Se você estiver utilizando o ProGuard e se deparar com um aviso relacionado à nossa classe AFKeystoreWrapper, adicione o seguinte código ao seu arquivo rules do ProGuard:

-keep class com.appsflyer.** { *; }
Esse artigo foi útil?
Usuários que acharam isso útil: 17 de 20

Comentários

0 comentário

Por favor, entrar para comentar.