Не удается получить идентификатор пользователя OneSignal (cordova)

#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 —