问题描述
我很难让Onesignal Mobile SDK函数“ getIds”返回超过20秒。这是我实现了Onesignal Mobile SDK的第二个应用程序,而第一个应用程序没有此问题。这也导致该应用需要先打开并聚焦,然后才能返回player_id。试图找到解决方案的方法导致我进入Onesignal api文档,在该文档中我找到了“ Add a Device”端点,尽管该文档说除非他们的支持告诉您,否则不要使用它。
我已经浏览并阅读:
- Ionic 4 OneSignal getIds big delay
- Cordova OneSignal Plugin won't getIds properly
- OneSignal - Add user from API
他们都没有给出明确的答案,说明使用终结点而不是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 (将#修改为@)