Integração do SDK da AppsFlyer - Android

  • Anunciantes
  • Desenvolvedores

android.pngVersão SDK: 4.10.3 (Notas de versão)

1. Visão geral

O SDK da AppsFlyer fornece a instalação do aplicativo e a funcionalidade de gravação de eventos. Desenvolvemos um SDK altamente robusto (7 + bilhões de instalações do SDK até o momento), seguro, leve e muito simples de incorporar.

Você pode gravar instalações, atualizações e sessões, bem como registrar eventos in-app adicionais além das instalações do aplicativo (incluindo compras in-app, níveis de jogo, 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 a Fire TV da Amazon, use a Solução de atribuição fora da loja 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 {
// always make sure to use the latest SDK version: 
// https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
	implementation 'com.appsflyer:af-android-sdk:4.9.0'
	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 dois estágios. No primeiro estágio, a Chave do desenvolvedor é fornecida junto com um conversionDataListener opcional. No segundo estágio, a chamada para startTracking indica que todas as preparações relevantes estão completas (por exemplo, chamar setCustomerUserId) e o SDK pode começar a gravar 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. Gravação de eventos in-app

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 medir o ROI (retorno sobre o investimento) e LTV (valor de vida útil).

A gravação de eventos in-app é realizada chamando trackEvent com parâmetros de nome e valor do evento. Consulte a documentação de Eventos in-apppara 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 In-App 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);

record_in_app_event_android_studio.png

5. Realizar deep linking

 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>

O Esquema configurado se correlaciona com o valor de af_dp incluso no link de atribuição.

Para receber seus dados de link direto, você deve implementar o retorno de chamada onAppOpenAttribution chamado pelo SDK da AppsFlyer. Ele retorna os parâmetros de Onelink/link de atribuição usados para abrir o 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. Gravação de receita

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 US$ 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.

Gravação de receita negativa

Se você precisar gravar 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("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName));
   }
 }
 @Override
 public void onInstallConversionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error getting conversion data: " + errorMessage);
 }
 @Override
 public void onAppOpenAttribution(Map<String, String> conversionData) {
 }
 @Override
 public void onAttributionFailure(String errorMessage) {
   Log.d("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 seu ID de usuário cliente o quanto antes, pois ele é associado apenas a eventos relatados após sua configuração. Se setCustomerUserId for chamado antes de chamar startTracking, você terá o ID de usuário do cliente na exportação bruta para instalações e para eventos. Se for definido depois, apenas o valor de eventos gravados ficará visível 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.

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, o SDK coleta o IMEI e o Android ID. 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.

Gravação de Notificações 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.

Atribuição de promoção cruzada

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 obter detalhes, consulte o artigo Atribuição de promoções cruzadas aqui.

Atribuição de convite do usuário

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 obter detalhes, consulte o artigo Atribuição 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 a verificação do servidor para compras in-app. Para ativar a validação da compra, 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 uso:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

Você pode cancelar a anonimização chamando deviceTrackingDisabled novamente, definido como false.

 Aviso

A anonimização de usuários afeta 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);

Atribuir 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 gravar instalações fora do Google Play, defina o canal/loja no AndroidManifest.xml do aplicativo com um canal único ou qualquer nome de loja para cada APK. O valor CHANNEL 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 metadados dentro da tag <application>.

Para obter mais detalhes sobre como gravar instalações para aplicativos fora da loja, leia aqui.

Exclusão (opt-out)

Em alguns casos extremos, convém encerrar todas as funções do SDK devido à conformidade legal e de privacidade. Isso pode ser conseguido com a APIisStopTracking. Depois que essa API é invocada, nosso SDK não se comunica mais com nossos servidores e deixa 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 reiniciar as funções do SDK mais uma vez stopTracking é definido como false, use a seguinte API do SDK:

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

 Aviso

Use a API stopTracking somente nos casos em que você quiser ignorar totalmente as funções do SDK do usuário. O uso dessa API afeta GRAVEMENTE sua atribuição, a coleta de dados e o mecanismo de links diretos.

Atrasar init do SDK para customerUserID

É possível atrasar a inicialização do SDK até que o customerUserID esteja definido. Esse recurso garante que o SDK não comece a funcionar até que o customerUserID seja fornecido. Se essa API for usada, todos os eventos in-app e quaisquer outras chamadas da API do SDK são descartados, até que o customerUserID seja fornecido e gravado.

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 o ID de usuário do cliente relevante e iniciar o SDK.

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(this);
    // Do your magic to get the customerUserID
    // ...
    // any AppsFlyer SDK code invoked here will be discarded
   //Call the following API once the customerUserID is available:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);
  }
}

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

Corrigindo URLs encurtadas com links diretos (deep links)

Se você estiver usando OneLinks que oferecem suporte a links de aplicativo para Android e os envolver com um link universal de terceiros, você pode usar a API setResolveDeepLinkURLs para notificar o SDK da AppsFlyer quais domínios de clique que invocam o aplicativo devem ser resolvidos pelo SDK e ter o OneLink subjacente extraído deles. Isso permitirá que você mantenha o link direto e atribuição ao envolver o OneLink com o link universal de um terceiro. Certifique-se de chamar essa API antes da inicialização do SDK.

AppsFlyerLib.getInstance().setResolveDeepLinkURLs("example.com", "click.example.com");

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 medir os resultados das 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: 21 de 26

Comentários

0 comentário

Por favor, entrar para comentar.