Cordova 从推送通知检测冷启动

Jer*_*ine 5 javascript push-notification ios cordova phonegap-pushplugin

我有一个 Cordova 应用程序(codova(3.4.0)在 iOS 上运行,很快也会在 Android 上运行。推送通知已实现并正常工作。我无法通过推送通知检测应用程序何时启动并将应用程序重定向到右侧页。

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

我现在有以下工作流程:

正常启动:

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

从推送通知冷启动应用程序:

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

如您所见,冷应用启动场景转到启动视图,这是不必要的,导致用户等待第一个视图加载,然后再次重定向。

问题是当 deviceready 触发时,我的 javascript 代码还不知道即将到来的推送通知,所以我正在寻找解决这个问题的方法。

有没有办法将额外的参数传递给 deviceready cordova 事件?或者有人有其他想法或解决方案来解决这个问题吗?

Jer*_*ine 1

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

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
...
}
Run Code Online (Sandbox Code Playgroud)

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

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

希望它能帮助某人。