Integrar o SDK

Saiba como inicializar e iniciar o Android SDK.

Antes de começar

  • Você deve instalar o SDK do Android.
  • Certifique-se de que no arquivo build.gradle do seu aplicativo, o valor de applicationId(no bloco defaultConfig ) corresponda ao ID do aplicativo na Appsflyer.
  • Obtenha a chave do desenvolvedor da AppsFlyer. É necessário inicializar com êxito o SDK.
  • Os códigos neste documento são exemplos de implementações. Certifique-se de alterar <AF_DEV_KEY> e outros placeholders, conforme necessário.
  • Todas as etapas deste documento são obrigatórias, salvo quando sinalizado do contrário.

Inicializando o SDK do Android

É recomendável inicializar o SDK na classe/subclasse global Aplicativo. Isso é para garantir que o SDK possa começar em qualquer cenário (por exemplo, deep links).

Etapa 1: importar AppsFlyerLib
Na classe global do seu aplicativo, importe AppsFlyerLib:

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

Etapa 2: inicializar o SDK
No aplicativo global onCreate, call init com os seguintes argumentos:

AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this);
AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this)
  1. O primeiro argumento é sua chave do desenvolvedor da AppsFlyer.
  2. O segundo argumento é um Nullable AppsFlyerConversionListener. Se você não precisa de dados de conversão, recomendamos passar um null como o segundo argumento. Para obter mais informações, consulte Dados de conversão.
  3. O terceiro argumento é o Contexto do Aplicativo.

Iniciando o SDK do Android

No método onCreate do Aplicativo, depois de chamar init, call start e passar o contexto Aplicativo como o primeiro argumento:

AppsFlyerLib.getInstance().start(this);
AppsFlyerLib.getInstance().start(this)

Deferring SDK start

OPCIONAL
Você pode adiar a inicialização do SDK chamando start de uma classe de atividade, em vez de chamá-lo na classe Aplicativo. init ainda deve ser chamado na classe Aplicativo.

O uso típico do início adiado do SDK é quando um aplicativo deseja solicitar o consentimento do usuário para coletar dados na atividade principal e chamar start após obter o consentimento do usuário.

⚠️

Aviso importante

Se o aplicativo chamar start de uma atividade, ele deve passar o Contexto da atividade para o SDK.
Deixar de passar o contexto da atividade não acionará o SDK, perdendo assim dados de atribuição e eventos in-app.

Starting with a response listener

Para receber a confirmação de que o SDK foi iniciado com sucesso, crie um objeto AppsFlyerRequestListener e passe-o como o terceiro argumento de start:

AppsFlyerLib.getInstance().start(getApplicationContext(), <AF_DEV_KEY>, new AppsFlyerRequestListener() {
  @Override
  public void onSuccess() {
    Log.d(LOG_TAG, "Launch sent successfully, got 200 response code from server");
  }
  
  @Override
  public void onError(int i, @NonNull String s) {
    Log.d(LOG_TAG, "Launch failed to be sent:\n" +
          "Error code: " + i + "\n"
          + "Error description: " + s);
  }
});
AppsFlyerLib.getInstance().start(this, <AF_DEV_KEY>, object : AppsFlyerRequestListener {
  override fun onSuccess() {
    Log.d(LOG_TAG, "Launch sent successfully")
    }
  
  override fun onError(errorCode: Int, errorDesc: String) {
    Log.d(LOG_TAG, "Launch failed to be sent:\n" +
          "Error code: " + errorCode + "\n"
          + "Error description: " + errorDesc)
    }
})
  • The onSuccess() é chamado para cada resposta 200 para uma solicitação de atribuição feita pelo SDK.
  • The onError(String error) é chamado para qualquer outra resposta e retorna a resposta como a sequência de caracteres de erro.

Exemplo completo

O exemplo a seguir demonstra como inicializar e iniciar o SDK a partir da classe Aplicativo.

import android.app.Application;
import com.appsflyer.AppsFlyerLib;
// ...
public class AFApplication extends Application {
    // ...
    @Override
    public void onCreate() {
        super.onCreate();
        // ...
        AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this);
        AppsFlyerLib.getInstance().start(this);
        // ...
    }
    // ...
}
import android.app.Application
import com.appsflyer.AppsFlyerLib
// ...
class AFApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // ...
        AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this)
        AppsFlyerLib.getInstance().start(this)
        // ...
    }
    // ...
}

Link do Github

Definindo o ID de usuário cliente

OPCIONAL
O ID de usuário cliente (CUID) é um identificador de usuário exclusivo criado fora do SDK pelo proprietário do aplicativo. Se disponibilizado para o SDK, ele pode ser associado a instalações e outros eventos in-app. Esses eventos marcados com CUID podem ter referência cruzada com dados do usuário de outros dispositivos e aplicativos.

Há duas maneiras de definir o CUID, dependendo se o SDK é iniciado ou não a partir da classe Application ou da classe Activity (consulte Iniciando o SDK do Android SDK).

Set the CUID in the Application class

Se você iniciou o SDK a partir da classe Application (consulte Iniciando o SDK do Android), pause o SDK para evitar que os dados de instalação sejam enviados para a AppsFlyer antes que o CUID seja fornecido.

Para obter o atraso, defina waitForCustomerUserId to true after init and before start.

AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
AppsFlyerLib.getInstance().start(this);

Depois de chamar start, você pode adicionar seu código personalizado que disponibiliza o CUID.
Depois que o CUID estiver disponível, a etapa final inclui definir o CUID, liberar o SDK do modo de espera e enviar os dados de atribuição com o ID do cliente para a AppsFlyer. Esta etapa é executada usando a chamada para a classe setCustomerIdAndLogSession.

AppsFlyerLib.getInstance().setCustomerIdAndLogSession(<CUSTOMER_ID>, this);

Além de setCustomerIdAndLogSession, não use setCustomerUserId ou qualquer outra funcionalidade do SDK da AppsFlyer, pois o SDK em espera irá ignorá-la.

Código de exemplo

public class AFApplication extends Application {
  private static final String AF_DEV_KEY = <AF_DEV_KEY>;
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
    AppsFlyerLib.getInstance().waitForCustomerUserId(true);
    AppsFlyerLib.getInstance().start(this);
    // Do your magic to get the customerUserID
    // any AppsFlyer SDK code invoked here will be discarded
    // ...
    // Once the customerUserID is available, call setCustomerIdAndLogSession(). 
    // setCustomerIdAndLogSession() sets the CUID, releases the waiting mode,
    // and sends the attribution data with the customer ID to AppsFlyer.
    AppsFlyerLib.getInstance().setCustomerIdAndLogSession(<CUSTOMER_ID>, this);
  }
}

📘

Observação

Se você deseja remover o modo de espera do fluxo de inicialização do SDK, não basta excluir a chamada para waitForCustomerUserId(true). Também é necessário substituí-lo por waitForCustomerUserID(false). Simplesmente remover a chamada é insuficiente porque o sinalizador booleano 'waitForCustomerUserId' é armazenado nas Preferências Compartilhadas do Android.

Set the CUID in an Activity class

Se você iniciou o SDK a partir de uma classe Activity class (see Deferring SDK start), we recommend setting the CUID after init and before start. Isso garante que o evento de instalação possa ser registrado com o CUID.

Use o setCustomerUserId para definir o CUID.

public void setCustomerUserId(String id);

Exemplo de uso:

// Do your magic to get the customerUserID
...
AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionListener, this);  
AppsFlyerLib.getInstance().setCustomerUserId(<MY_CUID>);
...
//Now you can call start    
AppsFlyerLib.getInstance().start(this , AF_DEV_KEY );

Ativação do modo de depuração

OPCIONAL
Você pode ativar os registros de depuração chamando setDebugLog:

AppsFlyerLib.getInstance().setDebugLog(true);
AppsFlyerLib.getInstance().setDebugLog(true)

📘

Observação

Para ver os logs de depuração completos, certifique-se de chamar setDebugLog antes de invocar outros métodos do SDK.

Veja o exemplo.

🚧

Aviso

Para evitar o vazamento de informações confidenciais, verifique se os registros de depuração estão desativados antes de distribuir o aplicativo.

Testando a integração

OPCIONAL
Para obter instruções detalhadas sobre testes de integração, consulte o Guia de testes de integração do SDK para Android.