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 через подсказку в нижней части страницы во время входа в систему, и они могут проверить вашу учетную запись, чтобы помочь диагностировать проблему.

Ответ 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'