Чем мы можем помочь?

Плагин Adobe AIR

  • Обновлено

Краткий обзор: Интегрируйте SDK AppsFlyer в приложения для iOS/Android, разработанные на платформе Adobe AIR, чтобы измерять установки, события в приложении, медиаисточники и многое другое.

Информация о плагине

Поддерживаемые платформы:

  • Android;
  • iOS 6+

На основе:

  • iOS AppsFlyer SDK V6.0.3
  • Android AppsFlyer SDK V5.4.1

Установка и внедрение

Установка

Загрузите файл AppsFlyerAIRExtension.ane из папки bin. Добавьте ANE в свой проект и убедитесь, что в IDE включено его добавление в пакет.

Если следующее не было добавлено автоматически, добавьте это в APP_NAME-app.xml:

<extensions>
  <extensionID>com.appsflyer.adobeair</extensionID>
</extensions>

 Примечания для приложений Android

  • В дэшборде AppsFlyer нужно добавить префикс "air." к имени пакета, так как Air добавляет его автоматически. Например, для приложения с именем пакета "com.test.android" нужно задать идентификатор приложения в дэшборде AppsFlyer как "air.com.test.android".

  • Добавьте следующие разрешения в Android Manifest (в описании приложения APP_NAME-app.xml):

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
    
  • Добавьте следующий метатег в Android Manifest внутри тега application (в описании приложения APP_NAME-app.xml):

    meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

В результате ваш Android Manifest должен выглядеть так:

Важно: Из-за некоторых ограничений в ADT после сборки APK в нём отсутствуют некоторые важные файлы.

Чтобы добавить эти файлы (с помощью автоматизированного скрипта):

  1. Поместите в один каталог по вашему выбору:
    • Файл APK
    • Файл keystore, использованный для подписи APK
    • af_apk_fix.sh script
  2. Запустите ./af_apk_fix.sh и введите запрошенные данные по запросу.

Вот что делает этот скрипт. Если возникнут какие-либо проблемы, вы можете выполнить эти шаги вручную:

  1. Декодируйте APK с помощью apktool. При этом будет создана папка app_name.
    apktool d app_name.apk

  2. Загрузите jar/aar SDK AppsFlyer той же версии, которая использовалась в APK.

  3. Извлеките файлы a- и b- из jar-файла (переименовав jar в zip) и поместите их в папку с декомпилированным apk по пути app_name/unknown/com/appsflyer/internal

  4. Отредактируйте apktool.yml и добавьте эти строки в раздел unknownFiles: 

    com/appsflyer/internal/b-: '0'
    com/appsflyer/internal/a-: '0'
    


    См. пример снимка экрана ниже.

  5. Соберите APK.back (он появится в папке app_name/dist folder).
    apktool b app

  6. Подпишите APK.

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKeystore.keystore app_name/dist/app_name.apk myKey
  7. Выполните zipalign для apk (чтобы его можно было загрузить в Google Play)

    zipalign -f -v 4 app_name/dist/app_name.apk app_name/dist/zipalign_app_name.apk
  8. Проверьте zipalign

    zipalign -c -v 4 app_name/dist/zipalign_app_name.apk
  9. Ваш apk zipalign_app_name.apk готов к использованию!

Внедрение

Импортируйте расширение AppsFlyer в свой проект:

import AppsFlyerInterface;

Создайте интерфейс AppsFlyer:

private static var appsFlyer:AppsFlyerInterface; 
appsFlyer = new AppsFlyerInterface();

[Необязательно] Если вы хотите настроить диплинкинг или получить доступ к данным о конверсиях AppsFlyer из приложения, зарегистрируйте Conversion Listener:

appsFlyer.registerConversionListener();

Задайте ключ разработчика и идентификатор ID приложения iOS (необязательно), а затем инициализируйте SDK:

appsFlyer.appsFlyer.init("DevKey", "iOSAppID");

Инициализируйте логирование сессий (автоматически регистрируются запуски приложения и переходы из фона на передний план) с помощью DevKey и идентификатора приложения iOS (необязательно):

appsFlyer.start("DevKey", "iOSAppID");

Диплинкинг

Чтобы получать соответствующую информацию AppsFlyer из используемой ссылки для диплинкинга:

  1. Зарегистрируйте следующие слушатели событий:
    appsFlyer.addEventListener(AppsFlyerEvent.APP_OPEN_ATTRIBUTION, eventHandler); // success 
    appsFlyer.addEventListener(AppsFlyerEvent.ATTRIBUTION_FAILURE, eventHandler); // error 
    
  2. Обработайте ответ в соответствующем обработчике события:
    private function eventHandler(event:AppsFlyerEvent):void {
    	log("AppsFlyer event: " + event.type + "; \nData: " + event.data);
    }

Отложенная глубинная ссылка (диплинкинг)

Чтобы получать данные конверсии для текущей установки:

  1. Зарегистрируйте следующие слушатели событий:
    appsFlyer.addEventListener(AppsFlyerEvent.INSTALL_CONVERSATION_DATA_LOADED, eventHandler); // success
    appsFlyer.addEventListener(AppsFlyerEvent.INSTALL_CONVERSATION_FAILED, eventHandler); //error
    
  2. Обработайте ответ в соответствующем обработчике события:
    private function eventHandler(event:AppsFlyerEvent):void {
    	log("AppsFlyer event: " + event.type + "; \nData: " + event.data);
    }

Сбор IMEI и идентификатора ID Android (только для Android)

Важно! Приложения, использующие службы Google Play, не должны выполнять сбор данных IMEI, так как это противоречит политике Google Play.

Если приложение работает в ОС версии выше KitKat (4.4) и на устройстве установлены службы Google Play, то по умолчанию SDK не проводит сбор данных IMEI и Android ID.

Чтобы явно отправить эти идентификаторы в AppsFlyer, разработчики могут использовать следующие API и разместить их перед инициализацией SDK.

Если службы Google Play в приложении НЕ используются, сбор данных IMEI и Android ID выполняется с помощью SDK.

Включить/отключить сбор IMEI (по умолчанию отключен)

appsFlyer.setCollectIMEI(bool);

Задать данные IMEI вручную

appsFlyer.setImeiData("imeiString");

Включить/отключить сбор идентификатора ID Android (по умолчанию отключен)

appsFlyer.setCollectAndroidID(bool);

Задать данные идентификатора ID Android вручную

appsFlyer.setAndroidIdData("AndroidIDString");

Справочник по API

Методы API

YouTube video player Description(Описание) Подпись/пример

logEvent

Регистрирует события в приложении.
var param:String = "Deposit";
var value:String = '{"amount":10, "FTDLevel":"-"}';
appsFlyer.logEvent(param, value);
начать

Отправляет событие логирования сессии независимо от состояния приложения.

appsFlyer.start();
 setAppUserId

Возвращает ID пользователя, используемый в приложении. 

appsFlyer.setAppUserId("user_id_as_used_in_the_app");
 setUserEmails

Возвращает адрес электронной почты пользователя.

appsFlyer.setUserEmails("example@example.com");
 setCurrency

Устанавливает валюту для логирования событий о доходе, например USD.

appsFlyer.setCurrency("USD");
 завершить

Используется, если нужно полностью отключить логирование SDK для соблюдения правовых норм и требований конфиденциальности. После вызова этого API наш SDK больше не взаимодействует с нашими серверами.

appsFlyer.stop();
 setDebug

Включает/отключает отладочные журналы AppsFlyer.

Важно: не публикуйте приложение в магазинах приложений с включенными журналами отладки.

appsFlyer.setDebug(bool);