OneSignal的“ getIds”功能需要很长时间,我可以改用api“添加设备”吗?

问题描述

我很难让Onesignal Mobile SDK函数“ getIds”返回超过20秒。这是我实现了Onesignal Mobile SDK的第二个应用程序,而第一个应用程序没有此问题。这也导致该应用需要先打开并聚焦,然后才能返回player_id。试图找到解决方案的方法导致我进入Onesignal api文档,在该文档中我找到了“ Add a Device”端点,尽管该文档说除非他们的支持告诉您,否则不要使用它。

我已经浏览并阅读:

他们都没有给出明确的答案,说明使用终结点而不是Onesignal.getIds()函数的优缺点,或者我需要做哪些额外的工作才能使其在移动设备上正常工作。

我的代码将永远返回,并且仅在打开应用程序时会返回来自离子/角度应用程序,app.component.ts文件和initialize app函数中的代码

this.onesignal.startinit('APP_INFO_HERE');

      this.onesignal.setLogLevel({logLevel: 6,visualLevel: 0});
      
      this.onesignal.iOSSettings({
        kOSSettingsKeyAutoprompt: true,kOSSettingsKeyInAppLaunchURL: false
      });

      this.onesignal.getIds().then((data) => {
        this.dataMngr.save('appId',data.userId);
        console.log('onesignal app id',data.userId);
        this.dataMngr.userData.app_id = data.userId;
        this.checkUpdate();
      });


      this.onesignal.inFocusdisplaying(this.onesignal.OSInFocusdisplayOption.None);

      this.onesignal.handleNotificationReceived().subscribe((data: OSNotification) => {
        this.showPushes();
        console.log('subscribe data',data);
      });
      
      this.onesignal.handleNotificationopened().subscribe((notification: OSNotificationopenedResult) => {
        if(notification.action.type === 1) {
          // handle action buttons
          let info;
          switch(notification.action.actionID) {
            case 'checkin':
              console.log('checkin action button',JSON.stringify(notification));
              info = notification.notification.payload.additionalData.info;
              if(typeof notification.notification.payload.additionalData.info == 'string'){
                info = JSON.parse(notification.notification.payload.additionalData.info);
              }
              this.dataMngr.checkin(info.notification,info.push_id);
              break;
            case 'okay':
              console.log('okay action button',JSON.stringify(notification));
              info = notification.notification.payload.additionalData.info;
              if(typeof notification.notification.payload.additionalData.info == 'string'){
                info = JSON.parse(notification.notification.payload.additionalData.info);
              }
              this.dataMngr.okay(info.user_id,info.push_id);
              break;
            case 'clear':
              this.dataMngr.clearPush(notification.notification.payload.additionalData.info.push_id);
              break;
          }
        } else {
          this.showPushes();
        }
      });

      this.onesignal.endInit();

代码有效,但不能很快或在后台运行。我还尝试过使用Onesignal.getPermissionSubscriptionState()方式获取player_id,而我得到的只是用于其中不同内容的空对象。我还尝试过尝试使用Onesignal.setSubscription(true)函数,然后再尝试获取getPermissionSubscriptionState,但是由于我正在android上进行测试,因此通知权限是认设置,不需要请求通知,并且仍然无法正常工作。

我已经看到一些人(我从onesignal认为)说getIds函数本来应该花费额外的时间,但是我使用Onesignal的第一个应用程序并不需要额外的时间。我对此问题感到非常困惑和沮丧。

回答该问题的任何帮助将不胜感激,即使用api“添加设备”端点创建Onesignal player_id的弊端是什么,或者我将如何进行更改以使player_id返回更多内容?很快?另外,我如何制作/获取Onesignal标记为“标识符”的推送令牌?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)