Push-уведомление с OneSignal: что означает "No Push Token"?
Я использую OneSignal для push-уведомлений.
В подписанном списке некоторые устройства/пользователи отмечены No (No Push Token)
. Объяснение говорит: This user has no push token and cannot be targeted.
Это происходит для iOS devices
, а также для Android devices
.
Что это значит? Почему это происходит? Как его изменить?
Ответы
Ответ 1
Это означает, что OneSignal не получил pushToken с устройства, однако устройство смогло зарегистрироваться в вашей учетной записи OneSignal. На iOS pushToken известен как токен устройства, на Android это идентификатор регистрации Google.
В зависимости от используемого вами OneSignal SDK существует функция setLogLevel
, которую можно вызвать до вызова OneSignal init для добавления дополнительных протоколов. Это будет напечатано в журнале Xcode для iOS или adb logcat для Android. Также убедитесь, что вы используете последний SDK OneSignal.
Вы также можете связаться с OneSignal через подсказку в нижней части страницы во время входа в систему, и они могут проверить вашу учетную запись, чтобы помочь диагностировать проблему.
Ответ 2
Убедитесь, что в проекте Xcode есть "Push Notifications" и" Удаленные уведомления.
Ответ 3
Не могли бы вы проверить, включена ли функция Push Push? Если это не так, включите его и посмотрите, работает ли он, иначе продолжайте читать.
Убедитесь, что вы используете последнюю версию OneSignal SDK (2.1.14)
так как эта версия должна была решить проблему. Затем попробуйте выполнить следующие исправления:
Исправить 1
На панели навигации выберите свой синий проект. Затем выберите свою цель и перейдите к настройкам сборки. Найдите другие флаги компоновщика и добавьте следующую запись: -ObjC
Сделайте проект чистым и снова запустите, посмотрите, работает ли он.
Исправить 2
В заголовке моста (если он есть) или в любом файле заголовка, который отображается для вашего делегата приложения, создайте расширение для класса OneSignal, в котором вы определяете следующий метод интерфейса:
+ (void)didRegisterForRemoteNotifications:(UIApplication*)app deviceToken:(NSData*)inDeviceToken;
Затем переопределите метод делегата didRegisterForRemoteNotifications
в делетете приложения и вызовите вышеуказанный метод в OneSignal и передайте оба параметра в SDK.
Ответ 4
Обратите внимание, что в OneSignal SDK был довольно значительный недостаток, когда он использовался в XCode 8 до версии 2.1.10, что привело к этим регистрациям No push token
для устройств iOS при включении пакета с использованием Cocoapods (рекомендуемый подход). Убедитесь, что вы обновили свой модуль.
См. примечания к выпуску для 2.1.11:
Исправлена ошибка "Нет Push Token" в 2.1.10, которая произошла, когда OneSignal был загружен через CocoaPods и включил другие модули, которые использовали флаг -ObjC.
Ответ 5
Как упоминалось в другом ответе, в настройке CocoaPods есть ошибка 2.1.10. Поэтому я изменил
от
pod 'OneSignal' ## points to 2.1.10
к
pod 'OneSignal', :git => 'https://github.com/OneSignal/OneSignal-iOS-SDK.git', :branch => 'master'