Cordova通过Push Notification检测冷启动

时间:2014-10-21 08:46:24

标签: javascript ios cordova push-notification phonegap-pushplugin

我有一个cordova应用程序(codo(3.4.0)在iOS上运行,很快也在Android上运行。推送通知已实现并正常工作。我在检测应用程序何时通过推送通知启动并重定向应用程序时遇到麻烦到右边页面。

注意:这与在应用程序在后台运行时从推送通知启动应用程序无关。只有当应用程序完全关闭时才会出现!

我现在有以下工作流程:

定期启动:

  • 等待cordova.js触发ondeviceready事件。
  • 在ondeviceready事件中重定向到我的应用的启动视图(通过window.location.hash)

来自推送通知的冷启动应用

  • 等待cordova.js触发ondeviceready事件。
  • 在ondeviceready事件中重定向到我的应用的启动视图(通过window.location.hash)
  • 插件启动并在我的应用中触发一个名为notificationreceived
  • 的javascript函数
  • 在notificationreceived函数中,重定向到基于推送通知的视图

正如您所看到的冷启动应用程序启动方案进入启动视图,这是不必要的,并导致用户等待第一个视图加载,只是再次重定向。

问题是当设备准备好时,我的javascript代码还没有意识到即将推出的推送通知,所以我正在寻找解决此问题的方法。

有没有办法可以将额外的参数传递给deviceready cordova事件?或者是否有人有另一个想法或解决方案来解决这个问题?

2 个答案:

答案 0 :(得分:2)

我想你可以解决方法:

var coldstart = true;

// Update flag if app coldstart
document.addEventListener("pause", function() {
  coldstart = false;
}, false);

答案 1 :(得分:1)

我最终设法解决了这个问题。似乎在启动期间,在以下方法中,launchOptions参数指示应用程序是否是从推送通知启动的。

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
...
}

在上面的方法中,我为我的应用程序设置了启动URL,如果应用程序是从推送通知启动的,则提供额外的url参数。所以我现在有以下场景解决了我的问题:

  • 在ondeviceready事件中读取启动参数。
  • 如果应用是从推送通知启动的,则不执行任何操作并等待插件重定向到右侧视图
  • 如果应用程序未从推送通知重定向到启动视图启动。

希望它有所帮助。