Cordova通过推送通知检测冷启动
Cordova detect cold start from Push Notification
我有一个在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活动?或者有人有其他想法或解决方案来解决这个问题吗?
我想你可以解决办法:
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事件中读取启动参数
- 如果应用程序是从推送通知启动的,则不执行任何操作,等待插件重定向到正确的视图
- 如果应用程序不是从推送通知启动的,则重定向到启动视图
希望它能帮助到别人。
相关文章:
- 如何检测是否有溢出
- 如何检测用于WebGL的专用或集成显卡
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 如何使用密码检测网络中的状态连接
- 使用JavaScript检测Flash
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测个位数整数时正在转换毫秒
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 动态插入的表:JQuery未检测到最后一行
- 检测页面上某个元素中选择(突出显示)或单击的内容
- jQuery检测浏览器是否支持Zoom
- 检测iframe是否跨域的愚蠢方法
- 检测推送通知是否正在等待 PhoneGap
- 如何检测用户是否正在使用 IE 并通知他们该网站不支持 IE
- 如何在显示 jquery 通知时检测 esc 按键
- Cordova通过推送通知检测冷启动
- 检测用户是否使用javascript打开OS X通知中心
- 在使用长轮询时,如何检测客户端是否订阅接收基于推送的通知