Ionic3 OneSignal如何检查应用是否因通知开放事件而启动

时间:2018-02-01 11:02:20

标签: push-notification ionic3 onesignal

我想知道是否有办法找出是否因为通知开启事件而启动了应用。

目前,当用户点击传入通知时,OneSignal将恢复/启动我的应用程序,它将调用应用程序的handleNotificationOpened处理程序,我可以在此处理通知而不会出现任何问题,并将用户重定向到我的特定页面应用程序基于通知的有效负载。

我想要解决的问题是,如果我的应用程序没有运行,那么OneSignal将启动该应用程序,它将显示我的应用程序的默认根页不到一秒钟,然后用户将被重定向到适当的页面。我想要实现的是阻止显示应用程序的根页面,并且仅在点击通知时显示通知处理页面,因此我需要知道是否有办法识别应用程序是否因为通知而启动的事实轻按。

有人知道如何实现这个目标吗?

由于

1 个答案:

答案 0 :(得分:0)

由于我无法找到检查启动参数或类似内容的方法来验证应用程序是否已启动以处理通知,我尝试从另一个角度解决问题。

对于任何对可能的“解决方法”感兴趣的人,我已经发布了一个可能的解决方案。请不要认为这是一个明确的解决方案,而是将其视为一个建议,绝不会在没有进行详尽测试的情况下将其推送到您的生产环境中。

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();
});
}