繁体   English   中英

Cordova通过Push Notification检测冷启动

[英]Cordova detect cold start from Push Notification

我有一个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事件? 或者有没有人有另一个想法或解决方案来解决这个问题?

我想你可以解决方法:

var coldstart = true;

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

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

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

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

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

希望它可以帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM