无法获取 OneSignal 用户 ID (cordova)

Can't get OneSignal user id (cordova)

无法获取 OneSignal 用户 ID。我收到错误 "Cannot read property OneSignal of undefined 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);
});

我不是科尔多瓦专家,但在 Google 上搜索让我找到了 this issue on Github。如果我没记错的话,当用户同意允许通知时,此方法有效。

相关代码:

let me = this; window["plugins"].OneSignal .startInit("XXXXXXXXX", "XXXXXXX") .handleNotificationOpened(notificationOpenedCallback).endInit();

window["plugins"].OneSignal.addSubscriptionObserver(function (state) { if (!state.from.subscribed && state.to.subscribed) { me.showAlertDialog('userId',state.to.userId); } me.showAlertDialog('state',JSON.stringify(state)); })

Link 到文档:https://documentation.onesignal.com/docs/cordova-sdk#section--addsubscriptionobserver-