Ionic 4 OneSignal getIds большая задержка - PullRequest
0 голосов
/ 06 июня 2019

Я использую 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

Спасибо!

1 Ответ

0 голосов
/ 10 июля 2019

Проблема задержки, скорее всего, связана с тем, что устройство получает идентификатор игрока из-за проблем с сетью. Включение подробного ведения журнала и проверка журнала logcat или Xcode должны точно определить вашу проблему.

...