Краткий обзор: Интегрируйте 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 в нём отсутствуют некоторые важные файлы.
Чтобы добавить эти файлы (с помощью автоматизированного скрипта):
- Поместите в один каталог по вашему выбору:
- Файл APK
- Файл keystore, использованный для подписи APK
- af_apk_fix.sh script
- Запустите
./af_apk_fix.shи введите запрошенные данные по запросу.
Вот что делает этот скрипт. Если возникнут какие-либо проблемы, вы можете выполнить эти шаги вручную:
-
Декодируйте APK с помощью apktool. При этом будет создана папка app_name.
apktool d app_name.apk -
Загрузите jar/aar SDK AppsFlyer той же версии, которая использовалась в APK.
-
Извлеките файлы
a-иb-из jar-файла (переименовав jar в zip) и поместите их в папку с декомпилированным apk по путиapp_name/unknown/com/appsflyer/internal -
Отредактируйте
apktool.ymlи добавьте эти строки в разделunknownFiles:com/appsflyer/internal/b-: '0' com/appsflyer/internal/a-: '0'
См. пример снимка экрана ниже. -
Соберите APK.back (он появится в папке
app_name/distfolder).apktool b app -
Подпишите APK.
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKeystore.keystore app_name/dist/app_name.apk myKey -
Выполните zipalign для apk (чтобы его можно было загрузить в Google Play)
zipalign -f -v 4 app_name/dist/app_name.apk app_name/dist/zipalign_app_name.apk -
Проверьте zipalign
zipalign -c -v 4 app_name/dist/zipalign_app_name.apk -
Ваш 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 из используемой ссылки для диплинкинга:
- Зарегистрируйте следующие слушатели событий:
appsFlyer.addEventListener(AppsFlyerEvent.APP_OPEN_ATTRIBUTION, eventHandler); // success appsFlyer.addEventListener(AppsFlyerEvent.ATTRIBUTION_FAILURE, eventHandler); // error - Обработайте ответ в соответствующем обработчике события:
private function eventHandler(event:AppsFlyerEvent):void { log("AppsFlyer event: " + event.type + "; \nData: " + event.data); }
Отложенная глубинная ссылка (диплинкинг)
Чтобы получать данные конверсии для текущей установки:
- Зарегистрируйте следующие слушатели событий:
appsFlyer.addEventListener(AppsFlyerEvent.INSTALL_CONVERSATION_DATA_LOADED, eventHandler); // success appsFlyer.addEventListener(AppsFlyerEvent.INSTALL_CONVERSATION_FAILED, eventHandler); //error - Обработайте ответ в соответствующем обработчике события:
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 |
Регистрирует события в приложении. |
|
| начать |
Отправляет событие логирования сессии независимо от состояния приложения. |
|
| setAppUserId |
Возвращает ID пользователя, используемый в приложении. |
|
| setUserEmails |
Возвращает адрес электронной почты пользователя. |
|
| setCurrency |
Устанавливает валюту для логирования событий о доходе, например USD. |
|
| завершить |
Используется, если нужно полностью отключить логирование SDK для соблюдения правовых норм и требований конфиденциальности. После вызова этого API наш SDK больше не взаимодействует с нашими серверами. |
|
| setDebug |
Включает/отключает отладочные журналы AppsFlyer. Важно: не публикуйте приложение в магазинах приложений с включенными журналами отладки. |
|