#javascript #cordova-plugins #onesignal
#javascript #cordova-плагины #onesignal
Вопрос:
Не удается получить идентификатор пользователя OneSignal. Я получаю сообщение об ошибке «Не удается прочитать свойство OneSignal с неопределенным значением null»
window.plugins.OneSignal
.startInit(OneSingalID)
.handleNotificationReceived(function (jsonData) {
setTimeout(function () {
removeNotications();
}, 1000 * 60); // 1 min.
})
.handleNotificationOpened(notificationOpenedCallback)
.inFocusDisplaying(window.plugins.OneSignal.OSInFocusDisplayOption.None)
.endInit();
window.plugins.OneSignal.getUserId(function (id) { // <- error
console.log(id)
});
Это тоже не сработало:
window.plugins.OneSignal.getIds(function(ids) {
console.log(ids);
});
Комментарии:
1. Как вы загружаете
OneSignalSDK
?2. Путем добавления плагина в конфигурационный файл. Забыл упомянуть, что это проект phonegap.
3. Ваш
OneSignal
инициализирован послеdeviceready
события?
Ответ №1:
Я не эксперт по cordova, но поиск в Google привел меня к этой проблеме на Github. Это работает, когда пользователь согласился разрешить уведомления, если я не ошибаюсь.
Соответствующий код:
let me = this; window["plugins"].OneSignal .startInit("XXXXXXXXX", "XXXXXXX") .handleNotificationOpened(notificationOpenedCallback).endInit();
window["plugins"].OneSignal.addSubscriptionObserver(function (state) { if (!state.from.subscribed amp;amp; state.to.subscribed) { me.showAlertDialog('userId',state.to.userId); } me.showAlertDialog('state',JSON.stringify(state)); })
Ссылка на документацию: https://documentation.onesignal.com/docs/cordova-sdk#section—addsubscriptionobserver —