Ionic3 OneSignal 如何检查应用程序是不是由于通知打开事件而启动
Posted
技术标签:
【中文标题】Ionic3 OneSignal 如何检查应用程序是不是由于通知打开事件而启动【英文标题】:Ionic3 OneSignal How to check if app is launched because of a notification open eventIonic3 OneSignal 如何检查应用程序是否由于通知打开事件而启动 【发布时间】:2018-02-01 11:02:19 【问题描述】:我想知道是否有办法查明应用程序是否由于通知打开事件而启动。
目前,当用户点击传入通知时,OneSignal 将恢复/启动我的应用程序,它会调用应用程序的 handleNotificationOpened 处理程序,我可以在其中毫无问题地处理通知,并将用户重定向到我的特定页面应用基于通知的有效负载。
我要解决的问题是,如果我的应用程序没有运行,那么 OneSignal 将启动该应用程序,它会在不到一秒的时间内显示我的应用程序的默认根页面,然后用户将被重定向到适当的页面。我想要实现的是防止显示应用程序的根页面,并且仅在单击通知时显示通知处理页面,因此我需要知道是否有办法识别应用程序因通知而启动的事实点按。
有人知道如何实现这一目标吗?
谢谢
【问题讨论】:
请分享您的主要组件和其他相关代码 @Sébastien 这个问题与识别应用程序的启动方式有关,即因为用户直接通过启动器进行交互,或者通过推送通知点击,最终将调用 handleNotificationOpened 处理程序函数。我想相信一定有某种“注入”到平台或其他一些变量来指示应用程序在应用程序启动后调用 handleNotificationOpened 函数。这就是我所追求的,因此我的主要组件或任何其他代码完全不相关,因为这不是错误,而是指导问题。 "我要解决的问题是,如果我的应用程序没有运行,那么 OneSignal 将启动该应用程序,它将显示我的应用程序的默认根页面不到一秒钟,然后用户将被重定向到正确的页面。“那里发生了什么?这是我想知道的。 @Sébastien 感谢您的关注,但我可能并不清楚这个问题!我想知道在启动应用程序时是否设置了某些内容以指示由于推送通知点击而将调用 handleNotificationOpened。我描述的问题与由于 handleNotificationOpened 执行而在用户被重定向到所需页面之前发生的“闪烁”有关。 【参考方案1】:由于我无法找到一种方法来检查启动参数或类似的东西来验证应用程序是否已启动以处理通知点击,因此我尝试从另一个角度解决问题。
对于任何对可能的“解决方法”感兴趣的人,我已经发布了一个可能的解决方案。请不要认为这是一个确定的解决方案,而应将其视为建议,并且在没有经过详尽测试的情况下绝不会将其推送到您的生产环境中。
constructor (platform: Platform, private statusBar: StatusBar, private oneSignal: OneSignal)
var isNotification = false;
platform.ready().then(() =>
this.statusBar.styleDefault();
setTimeout(() =>
if (! isNotification)
this.rootPage = FirstRunPage;
,3000);
var iosSettings =
kOSSettingsKeyAutoPrompt: false,
kOSSettingsKeyInAppLaunchURL: false
;
this.oneSignal.startInit('replace with Onesignal id');
this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.Notification);
this.oneSignal.iOSSettings(iosSettings);
this.oneSignal.handleNotificationOpened().subscribe((data) =>
isNotification = true;
this.nav.push("NotifyHandlerPage");
);
this.oneSignal.endInit();
);
【讨论】:
以上是关于Ionic3 OneSignal 如何检查应用程序是不是由于通知打开事件而启动的主要内容,如果未能解决你的问题,请参考以下文章
如何在通知 ionic 3 onesignal 中使用自定义声音?
Ionic - OneSignal 在 iOS 13.x 上不起作用