6

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

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

我现在有以下工作流程:

常规启动:

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

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

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

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

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

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

4

2 回答 2

2

我想你可以解决方法:

var coldstart = true;

// Update flag if app coldstart
document.addEventListener("pause", function() {
  coldstart = false;
}, false);
于 2014-12-29T14:43:31.317 回答
1

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

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

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

  • 在 ondeviceready 事件中读取启动参数。
  • 如果应用程序是从推送通知启动的,则什么也不做,等待插件重定向到正确的视图
  • 如果应用程序未从推送通知重定向到启动视图启动。

希望它可以帮助某人。

于 2015-03-01T22:40:32.830 回答