Я использую Ionic 4 (Angular) с одним сигналом для push-уведомления (плагин OneSignal Cordova и один сигнал через npm).
Когда я использую функцию getIds (), у меня большая задержка для получения идентификаторов пользователя (userId и token), это занимает от 30 секунд до 2 минут. В некоторых случаях эти идентификаторы не возвращаются.
Я попытался переключиться из жизненного цикла, получить до или после initializeApp, я попытался использовать addSubscriptionObserver, а также addPermissionObserver. У всех одинаковый результат, эта большая задержка от 30 секунд до 2 минут и в некоторых случаях не возвращается.
Это код, который я сейчас использую внутри initializeApp () (initiliazeApp вызывается в конструкторе) в app.component.ts Ionic 4 (Angular):
this.oneSignal.startInit(this.onesignal_appid, this.firebase_senderid);
this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.InAppAlert);
this.oneSignal.handleNotificationReceived().subscribe((res) => {
// do something when notification is received
});
this.oneSignal.handleNotificationOpened().subscribe((res) => {
// do something when a notification is opened
});
this.oneSignal.endInit();
this.getNotificationPlayerIds()
.then((ids) => {
console.log('first get ids: ', ids);
this.notificationPlayerIds = ids;
})
.catch((e) => {
console.log('first get ids error: ', e);
});
getNotificationPlayerIds() {
return new Promise((resolve, reject) => {
if (this.platform.is('cordova')) {
this.oneSignal.getIds()
.then((ids) => {
resolve(ids);
})
.catch((e) => {
reject(e);
})
}
})
}
Я надеюсь, что эти идентификаторы вернутся как можно скорее, чтобы я мог сохранить эти данные в объекте пользователя в базе данных.
Есть ли в коде что-то, что является неправильным и вызывает это, или это действительно проблема модуля плагинов / узлов (npm)? Я даже открыл вопрос об ионной команде, но безуспешно.
https://github.com/ionic-team/ionic-native/issues/3046
Спасибо!