Решение проблем
Начните с включения отладочных логов: они показывают, что именно сделал SDK и почему. См. Отладочные логи.
Ищите тег Unolink в Logcat или [Unolink] в консоли Xcode.
В панели ничего не появляется
- Включите «Включать тестовые устройства» в Воронке или «Путях». Debug-сборки считаются тестовыми устройствами и по умолчанию скрыты.
- Проверьте, что
configureвыполняется. Его нужно вызвать один раз и рано:Application.onCreate()на Android,init()@mainApp на iOS, корневой layout в React Native,main()во Flutter. - Отправьте события сейчас. События уходят каждые 15 секунд, пока приложение открыто, и когда оно уходит в фон.
Нажмите «Домой» или вызовите
flush(). - Проверьте сеть. Без сети события ждут на устройстве и отправляются, когда она появится.
«Invalid SDK key (401)»
Ключ неверный, от другого приложения или отозван. Скопируйте его снова в приложении → Настройки → Ключи SDK. Если вы не сохранили его при создании, создайте новый ключ: полный ключ показывается только один раз. После ответа 401 ничего не отправляется до следующего запуска.
«The SDK isn't included in this app's Unolink plan (403)»
SDK входит в тариф Pro и выше. Владельцу приложения нужно перейти на него в разделе Оплата. До тех пор SDK ничего не отправляет и ничего не держит в очереди.
Часть событий пропадает
- Недопустимое имя. Имена событий начинаются с латинской буквы и содержат только латинские буквы, цифры,
_и., не длиннее 64 символов. Недопустимые отклоняются и записываются в лог. - Слишком много свойств. Не больше 20 на событие, строки до 200 символов, всего 4 КБ.
- Недопустимые ID экранов онбординга.
stepиflowподчиняются тому же правилу, что и имена событий:how_heard, а неhow-heard. В development-сборках SDK для React Native (0.3.1 и новее) предупреждает в консоли. - Лимит месяца сильно превышен. При достижении лимита ничего не блокируется. Только после превышения лимита вдвое ваши
собственные (custom) события отклоняются с
quota_exceeded; стандартные события воронки записываются всегда. - Вызов до
configure. Нативные SDK для iOS и Android игнорируют вызовы, сделанные доconfigure. React Native (0.3.1 и новее) сохраняет их и отправляет сразу после него. - Отслеживание отключено.
setEnabled(false)останавливает отслеживание и запоминается между запусками.
Покупки или пробные периоды учитываются дважды или не учитываются вовсе
- RevenueCat подключён? Тогда о пробных периодах и покупках сообщает RevenueCat, а вызовы
purchaseиtrialStartedиз приложения игнорируются. Можете их убрать, если хотите; вреда от них нет. - Покупки из RevenueCat не привязываются к установке? Сообщайте собственный app user ID RevenueCat. В SDK 0.3.2 и новее
connectRevenueCatподдерживает его в актуальном состоянии (см. RevenueCat). Иначе вызывайте с нимsetUserId(Purchases.shared.appUserID,Purchases.sharedInstance.appUserID,Purchases.getAppUserID()илиPurchases.appUserID) послеPurchases.configure, после каждогоPurchases.logInиPurchases.logOutи при каждом запуске. Покупка, которая приходит раньше, чем приложение сообщило своего пользователя, ждёт и привязывается, как только это произойдёт. Учитываются все ID пользователя, которые сообщала установка, поэтому гость, который купил, а потом создал аккаунт, сохраняет покупку. Если приложение сообщает только ID аккаунта, покупка гостя привязывается только со следующим событием RevenueCat для этого клиента (например, с первым продлением). См. Гости и аккаунты. - Нет RevenueCat? Вызывайте
purchaseс ценой в виде десятичного числа и трёхбуквенным кодом валюты, после того как магазин её подтвердит.
Нет отложенного диплинка
- На iPhone так и должно быть. У Apple нет реферера установки, поэтому отложенные диплинки есть только на Android.
- Устанавливайте из Google Play. У установок вручную и из Android Studio нет реферера Play. Используйте внутреннее тестирование
или
debugInstallReferrerв debug-сборке. См. Тестирование. - Только первый запуск. Реферер читается один раз на установку. Чтобы протестировать снова, удалите приложение или очистите его данные.
- Задайте диплинк для ссылки. В панели: Ссылки → ⋯ → Изменить → Диплинк. Ссылка без него всё равно засчитывает установку, но открывать нечего.
- Зарегистрируйте слушатель. Его можно добавить после
configure: ссылка, пришедшая раньше, всё равно будет доставлена. В React Native для этого нужна версия 0.3.1 или новее; в 0.3.0 подписывайтесь сразу послеconfigure. - Экран находится за онбордингом или входом в аккаунт? Слушатель срабатывает один раз на установку. Когда онбординг завершён,
прочитайте
getPendingDeferredDeepLink(), откройте ссылку, затем вызовитеconsumeDeferredDeepLink(). Начиная с 0.3.3 ссылка ждёт, пока вы её не используете, даже если приложение за это время закрывали (до 30 дней). См. Откройте её после онбординга. - Одна и та же ссылка открывается при каждом запуске? Вызовите
consumeDeferredDeepLink(), когда откроете её.
Переустановка не засчитывается ссылке
Каждый клик засчитывается только одной установке. После переустановки Google Play может снова передать приложению тот же реферер, и эта вторая установка не засчитывается ссылке повторно. Unolink никогда не гадает.
React Native и Flutter
- Expo Go не работает. В SDK есть нативный код: сделайте development build (
npx expo prebuildили EAS Build). - «Native module not found» или
MissingPluginException. Пересоберите приложение после установки. Перезагрузка JavaScript или hot restart во Flutter не загружают новый нативный код. - Сборка iOS падает после установки. Выполните
pod installв папкеios(React Native без Expo), затем соберите снова.
Всё ещё не получается?
Напишите на [email protected], указав название приложения, платформу, версию SDK и отладочный лог одного запуска приложения.