Интеграция SDK

Узнайте, как инициализировать и запустить SDK Android.

Прежде чем начать

  • Необходимо установить SDK для Android.
  • Убедитесь, что в файле build.gradle вашего приложения значение applicationId(в блоке defaultConfig ) совпадает с идентификатором приложения в AppsFlyer.
  • Получите ключ разработчика AppsFlyer. Он необходим для успешной инициализации SDK.
  • Фрагменты кода приведены в этом документе как примеры реализации. Обязательно измените <AF_DEV_KEY> и другие заполнители на собственные значения.
  • Все шаги в этом документе являются обязательными, если не указано иное.

Инициализация SDK Android

Рекомендуется инициализировать SDK внутри глобального класса/подкласса Application. Так SDK сможет запуститься в любом сценарии (например, при диплинкинге).

Шаг 1. Импорт AppsFlyerLib
В глобальном классе Application импортируйте AppsFlyerLib:

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

Шаг 2. Инициализация SDK
В глобальном классе Application onCreate, call init со следующими аргументами:

AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this);
AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this)
  1. Первый аргумент — ваш ключ разработчика AppsFlyer.
  2. Второй аргумент — допускающий значение null AppsFlyerConversionListener. Если вам не нужны данные о конверсиях, рекомендуем передавать null в качестве второго аргумента. Дополнительные сведения см. в статье Данные о конверсиях.
  3. Третий аргумент — контекст приложения.

Запуск SDK Android

В методе onCreate класса Application после вызова init, call start и передайте ему контекст приложения в качестве первого аргумента:

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

Deferring SDK start

Необязательно
Вы можете отложить инициализацию SDK, вызвав start из класса Activity, а не из класса Application.

Обычно отложенный запуск SDK используется, когда приложение запрашивает у пользователя разрешение на сбор данных в основной активности и вызывает start после его получения.

⚠️

Важное замечание

Если приложение вызывает start из класса Activity, оно должно передать контекст активности Activity Context в SDK.
Если не передать контекст активности, SDK не сработает, что приведет к потере данных атрибуции и событий в приложении.

Starting with a response listener

Чтобы получать подтверждение успешного запуска SDK, создайте объект AppsFlyerRequestListener и передайте его в качестве третьего аргумента start:

AppsFlyerLib.getInstance().start(getApplicationContext(), <YOUR_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, <YOUR_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() вызывается для каждого ответа 200 на запрос атрибуции, посланный пакетом SDK.
  • The onError(String error) выполняется для любого другого ответа и возвращается ответ в виде строки ошибки.

Полный пример

В следующем примере показано, как инициализировать и запустить SDK из класса Application.

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)
        // ...
    }
    // ...
}

Ссылка на Github

Включение режима отладки

Необязательно
Чтобы включить журналы отладки, вызовите setDebugLog:

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

📘

Примечание

Для просмотра полных журналов отладки необходимо вызвать setDebugLog до вызова других методов SDK.

См. пример.

🚧

Предупреждение

Чтобы не допустить утечки конфиденциальных данных, перед распространением приложения обязательно убедитесь, что журналы отладки отключены.

Тестирование интеграции

Необязательно
Подробные инструкции приведены в руководстве по тестированию интеграции SDK для Android.