Integração do SDK da AppsFlyer - Android

android.pngVersão do SDK:  4.8.11 (Notas de Versão)

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.

O SDK para Android da AppsFlyer é compatível com Android 2.3 e superior.

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

2. Início rápido

2.1 Download do SDK 

Para fazer o download do jar do SDK para Android, 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 a Module-level /app/build.gradle antes das dependências:
repositories {
mavenCentral()
}


Adicione a dependência de compilação com a última versão do SDK da AppsFlyer no arquivo  
build.gradle: 

dependencies {
compile 'com.appsflyer:af-android-sdk:4+@aar'
compile '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 o novo referrer API do Google, devem definir o seguinte rule do ProGuard:
    -dontwarn com.android.installreferrer
  • 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:

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

3. Inicialização do SDK

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

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

public class AFApplication extends Application {
   private static final String AF_DEV_KEY = "<sua-dev-key-appsflyer>";
   @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: compile 'com.android.installreferrer:installreferrer:1.0' e o getApplicationContext() aprovado no seguinte método: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); são o pré-requisito para relatar o novo 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 no aplicativo 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 no aplicativo é realizado ao chamar trackEvent com o nome do evento e os parâmetros de valor. Consulte a documentação Eventos no aplicativo 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 obter 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(context,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");

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

A customerUserID DEVE ser definida antes do trackAppLaunch. Recomenda-se definir sua ID 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

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

Acompanhamento de desinstalações

A AppsFlyer permite que você acompanhe desinstalações de aplicativos.

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

Acompanhamento de 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\" } } }"[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 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);
      }
  }
} 

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

Para que a AppsFlyer contabilize duas sessões separadas, o tempo padrão entre cada uma deve ser de, no mínimo, 5 segundos. A sessão começa quando o usuário abre o aplicativo. Se você quiser configurar um tempo diferente entre sessões, use a seguinte API: AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

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

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

Em qualquer evento, o SDK pode ser reativado chamando a mesma API, exceto para aprovar falso.

 Aviso

Use esta API somente quando quiser ignorar totalmente este usuário em todo e qualquer acompanhamento. Usar esta API afeta GRAVEMENTE seu relato e atribuição.

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 do cliente AppsFlyerLib.getInstance().waitForCustomerUserId(true); imediatamente antes do método init(). O resto da inicialização do SDK deve permanecer inalterada.

Uma vez que o customerUserID foi fornecido, chamar AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", isso); para fornecer o SDK com o id de usuário do cliente relevante e acionar 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 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.

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.

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:

-dontwarn com.appsflyer.*
Esse artigo foi útil?
Usuários que acharam isso útil: 10 de 12

Comentários

0 comentário

Por favor, entrar para comentar.