Тестирование интеграции
Прежде чем начать
Easily test with our SDK wizard
Чтобы успешно выполнить тест, описанный в этом документе, необходимо:
Тестирование интеграции SDK для iOS
Тестирование состоит из следующих действий:
- Имитация клика по рекламе и установки приложения:
- Если вы реализуете ATT, следуйте этим инструкциям.
- Если вы не реализуете ATT, следуйте этим инструкциям.
- Проверка данных о конверсии установки.
Apps that implement ATT
Следуйте этим инструкциям, если в приложении реализуется поддержка App Tracking Transparency (ATT).
Атрибуция выполняется через сопоставление ID, если будут выполнены следующие условия:
- Ссылка атрибуции содержит параметр
idfa
parameter - ATT реализован и:
requestTrackingAuthorization
вызывается доstart
(с помощьюwaitForATTUserAuthorization
)- Согласие пользователя получено.
Шаг 1. Имитация клика по рекламе
Смоделируйте клик по рекламе с помощью ссылки атрибуции. Ссылка атрибуции должна иметь следующую структуру:
https://app.appsflyer.com/<app_id>?pid=<media_source>
&idfa=<registered_device_idfa>
Где:
app_id
— идентификатор приложения AppsFlyer (включая суффиксid
)pid
— медиа-источник, которому должна атрибутироваться установка.idfa
— IDFA зарегистрированного устройства.
Пример
Если идентификатор вашего приложения id123456789
, ссылка атрибуции может выглядеть следующим образом:
https://app.appsflyer.com/id123456789?pid=conversionTest1&idfa=1A2B3C4D-9128-4597-1234-
04E23D654321
Шаг 2. Установка приложения
Включите режим отладки и установите приложение на зарегистрированное тестовое устройство.
Шаг 3. Выполнение теста
Переходите к проверке данных о конверсии.
Apps that don't implement ATT
Шаг 1. Имитация клика по рекламе
Смоделируйте клик по рекламе с помощью ссылки атрибуции. Ссылка атрибуции должна иметь следующую структуру:
https://app.appsflyer.com/<app_id>?pid=<media_source>
Где:
app_id
— идентификатор приложения AppsFlyer (включая суффиксid
).pid
— медиа-источник, которому должна атрибутироваться установка.
Пример
Если идентификатор вашего приложения id123456789
, ссылка атрибуции может выглядеть следующим образом:
https://app.appsflyer.com/id123456789?pid=conversionTest1
Шаг 2. Установка приложения
Включите режим отладки и установите приложение на любое устройство. Поскольку IDFA, используемый для регистрации устройства, недоступен, в этом случае регистрация устройства не имеет смысла.
Шаг 3. Выполнение теста
Переходите к проверке данных о конверсии.
Совет
Нередко тестирование с помощью ссылок атрибуции выполняется несколько раз. Поэтому рекомендуется один из параметров атрибуции использовать для указания «версии» теста. Так проще разобраться, какая ссылка вызвала какую конверсию.
В примере выше параметр
pid
isconversionTest1
. В последующих тестах значениеpid
toconversionTest2
,conversionTest3
и так далее.
Inspect conversion data
После имитации конверсии и установки приложения выполните следующие шаги для проверки данных о конверсии соответствующей установки.
Шаг 1. Получение UID установки
После установки приложения найдите в терминале Xcode conversions.appsflyer
. Найдите параметр uid
и скопируйте его значение.
Шаг 2. Проверка данных о конверсиях
Перейдите к API для получения данных теста по конверсиям и заполните обязательные поля:
app-id
: идентификатор вашего приложения.device_id
: вставьте значениеuid
, полученное на шаге 1.devkey
- Application's devkey. Learn here how to get it.
Затем нажмите Попробовать, чтобы выполнить тест.
Ожидаемые результаты
Если ATT реализован, и получено согласие пользователя, результатом является ответ 200, аналогичный приведенному ниже (сокращен для наглядности):
{
...
"af_status" = "Non-organic";
...
"match_type" = id_matching;
"media_source" = conversionTest1;
...
}
В противном случае атрибуция выполняется вероятностно. Результатом является ответ 200, аналогичный приведенному ниже (сокращен для наглядности):
{
...
"af_status" = "Non-organic";
...
"match_type" = probabilistic;
"media_source" = conversionTest1;
...
}
Если установка не атрибутирована, результатом будет ответ 200 со следующей полезной нагрузкой:
{
"af_message" = "organic install";
"af_status" = Organic;
"install_time" = "2021-08-23 06:59:51.194";
"is_first_launch" = 1;
}
Примечание
Данные об установках обычно отображаются на дэшборде в течение 30 минут.
Поиск и устранение неполадок в интеграции SDK для iOS
Установки и события не регистрируются
Установки и события могут не регистрироваться по несколькими причинам:
-
Неверный формат App ID: если заданный идентификатор приложения имеет неверный формат, установки и события регистрироваться не будут. Указывая идентификатор приложения в файле делегата, убедитесь, что он состоит только из цифр. Если идентификатор приложения имеет неверный формат, в журнале отображается такое сообщение об ошибке:
\[ERROR\] AppsFlyer: -\[AppsFlyerTracker validateAppID\] AppsFlyer Error: appleAppID should be a number!
-
Неверный App ID: если задан идентификатор приложения, которого нет в вашем аккаунте, установки и события регистрироваться не будут. При этом в журнале отображается такое сообщение об ошибке:
AppsFlyer: -[AppsFlyerHTTPClient sendRequestEventToServer:isRequestFromCache:appID:isDebug: completionHandler:]_block_invoke sent information to server, status = 404
The 404
означает, что SDK не удалось найти приложение в вашем аккаунте.
-
Неверный ключ разработчика: если задан неверный ключ разработчика, установки и события регистрироваться не будут. При этом в журнале отображается такое сообщение об ошибке:
AppsFlyer: -[AppsFlyerHTTPClient sendRequestEventToServer:isRequestFromCache:appID:isDebug:completionHandler:] _block_invoke sent information to server, status = 400
Ошибка 400 означает, что SDK не удалось проверить подлинность запроса на регистрацию установок и событий. Проверьте, правильно ли задан ключа разработчика. Кроме того, убедитесь, что ключ разработчика содержит только буквы и цифры.
Правильно:
[AppsFlyerLib shared].appleAppID = @"340954503";
Неправильно:
[AppsFlyerLib shared].appleAppID = @"id340954503";
Неправильно:
[AppsFlyerLib shared].appleAppID = @"com.appslyer.sampleapp";
Идентификатор приложения и ключ разработчика заданы правильно, однако установки не регистрируются
Пример ситуации
В приложении правильно указаны идентификатор приложения и ключ разработчика, тем не менее установки не регистрируются.
Возможные причины
Инициализация SDK выполнена неправильно. Обязательно вызовите метод start
в applicationDidBecomeActive
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
[[AppsFlyerLib shared] start];
}
func applicationDidBecomeActive(application: UIApplication) {
AppsFlyerLib.shared().start()
}
В журнале отображается сообщение "AppsFlyer dev key missing or empty. Aborting"
Пример ситуации
Вы просматриваете установки и внутренние события приложения в журнале. В журнале отображается сообщение "AppsFlyer dev key missing or empty. Aborting" (Ключ разработчика AppsFlyer отсутствует или пуст. Отмена).
Возможные причины
Ключ разработчика не задан. Он должен быть обязательно задан в классе appDelegate, в методе didFinishLaunchingWithOptions
:
[AppsFlyerLib shared].appsFlyerDevKey = @"<YOUR_DEV_KEY>";
AppsFlyerLib.shared().appsFlyerDevKey = "<YOUR_DEV_KEY>"
Все установки атрибутируются как органические
Пример ситуации
Выполняется тестирование атрибуции с помощью ссылок атрибуции. Используется прослушиватель конверсий из SDK, но в журнале все установки регистрируются как органические. Кроме того, на панели управления не показано ни одной неорганической установки.
Возможные причины
- Используется неправильная ссылка атрибуции. См. руководство по ссылкам атрибуции.
- Убедитесь, что устройство, на котором вы проводите тестирование, зарегистрировано.
Регистрация дохода выполняется неправильно
Пример ситуации
Выполняется тестирование событий дохода в приложении. Эти события отображаются на панели управления, однако доход не регистрируется.
Возможные причины
Неверный формат параметра дохода. Для значений дохода НЕЛЬЗЯ применять какое бы то ни было форматирование. В них не должны использоваться запятые-разделители, знаки валюты или текст. Событие дохода должно иметь, например, такой формат: 1234.56.
При регистрации установки или события получен ответ с кодом 404
Пример ситуации
Вы проводите тестирование, чтобы узнать, правильно ли атрибутируются установки и внутренние события приложения исходной точке взаимодействия. Однако и для событий установки, и для внутренних событий приложения отображается ответ с кодом 404. Ни события установки, ни внутренние события приложения не отображаются на панели управления.
Возможные причины
Код ответа 404 означает, что идентификатор приложения неверен. См. пункт Установки и события не регистрируются.
При регистрации установки или события получен ответ с кодом 400.
Пример ситуации
Выполняется просмотр внутренних событий приложения в журнале. При инициировании событий в журнале отображается код ответа 400.
Возможные причины
Это может означать проблему с ключом разработчика. Проверьте, правильно ли задан ключ разработчика. Кроме того убедитесь, что ключ разработчика содержит только буквы и цифры. См. пункт Установки и события не регистрируются.
При регистрации установки или события получен ответ с кодом 400.
Пример ситуации
Вы тестируете установки и другие события конверсии в журнале. При инициировании этих событий в журнале отображается ошибка 403 (Forbidden, доступ запрещен).
Возможные причины
This might be because you have the Zero package, which does not include attribution data; only data on clicks and impressions. To start receiving attribution data, learn more about the different AppsFlyer packages, and update as needed. You can also contact our customer engagement team at [email protected] if you have questions about our packages.
Создание отладочного приложения для iOS
Необязательно
Вы можете использовать возможности Xcode по настройке компиляции, чтобы быстро сконфигурировать простое в использовании приложение для отладки. Оно позволит переключаться между отладочным и рабочим приложениями, нажимая активные условия компиляции Xcode.
Примечание
Если вы не против смешивания данных рабочего приложения с тестовым трафиком, можно переходить к разделу Тестирование интеграции. Все тесты можно проводить как для рабочих, так и для отладочных приложений.
Для этого нужно задать определяемый пользователем параметр в настройках сборки проекта и предоставить его через свойство info.plist
.
Шаг 1. Добавление отладочного приложения в AppsFlyer
Add a new pending iOS app to AppsFlyer or ask a team member with dashboard access to add it. Choose any available app ID–You will need it in step 3. Make sure the ID is 9 digits and starts with four 1s, for example, 111167538.
Шаг 2. Добавление настройки, определяемой пользователем
- В файловом навигаторе Xcode выберите корневую папку проекта и перейдите в Build Settings (Настройки сборки).
- Нажмите + в панели инструментов и выберите Add User-Defined Setting (Добавить определяемый пользователем параметр). В этом случае мы назовем его
AF_APP_ID
. - Раскройте только что созданный пользовательский параметр:
- Задайте для условного параметра Debug (Отладка) идентификатор вашего тестового приложения (упомянутый в шаге 1).
- Задайте для условного параметра Release (Релиз) идентификатор вашего рабочего приложения.
Шаг 3. Предоставление идентификатора приложения через info.plist
Перейдите в файл info.plist
проекта и добавьте новое свойство (называется AFAppID
в данном случае). В качестве значения укажите $(AF_APP_ID)
(на основе имени пользовательского параметра, заданного на шаге 2).
Шаг 4. Получение и настройка идентификатора приложения
Чтобы получить доступ к идентификатору приложения и использовать его при инициализации SDK, добавьте следующий код didFinishLaunchingWithOptions
В AppDelegate
:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// ...
guard let appID : String = Bundle.main.object(forInfoDictionaryKey: "AFAppID") as? String else {
fatalError("Cannot find app ID")
}
AppsFlyerLib.shared().appleAppID = appID
// ...
return true
}
Шаг 5. Запуск приложения с использованием конфигурации отладочной сборки
Чтобы изменить активную конфигурацию сборки:
- Перейдите в раздел Product (Продукт) > Scheme (Схема) > Edit Scheme (Редактировать схему)...
- Выберите Run (Запустить) и измените конфигурацию сборки на Debug (Отладка) или Release (Релиз), если требуется.
Теперь, когда для сборки приложения применяется отладочная конфигурация, Xcode будет использовать идентификатор отладочного приложения, заданный вами на шаге 2.
Изменения сохранены 3 месяца назад