我在用着Phonegap http://phonegap.com/4.2(基于Cordova 5.0)创建跨平台应用程序。
该应用程序适用于 Android 和 iOS。
当用户加载应用程序时,他位于index.html
。从那里我可以访问各种 JavaScript 方法,原始的、基于 Cordova 的方法,而且我碰巧正在使用jQuery https://jquery.com/v1.11.1。
当应用程序收到推送通知时,应用程序必须能够访问location
有效负载中的属性并从那里访问特别提到的目的地(例如'https://stackoverflow.com/questions/ask https://stackoverflow.com/questions/ask')。我正在这样做。然后用户要么被重定向到该特定位置,即一个网站(无需打开浏览器,i.e。离开应用程序),or将网站包含在索引文件中并替换其内容。
Using iFrames
似乎不是一个选项,只是将网站包含在索引文件中,因为该网站只是显示为空白或其他一些问题 - 虽然我可能是错的,但那就是sort of偏离主题(可能会解决我即将介绍的整个问题)。
阅读了一些文章后(安东尼利斯 http://antonylees.blogspot.ca/2013/02/launch-website-as-mobile-app-using.html, 堆栈溢出 https://stackoverflow.com/questions/22247816/window-location-href-doesnt-work-in-phonegap-app#answer-22336348等)我归结为简单使用的解决方案window.location.replace(externalUrl);
访问该网站。它工作完美。 (请注意,构建网站并将其包装到我的应用程序中不是一个选项,因为它太重了)。
到目前为止,一切都很好
我正在使用推送插件 https://github.com/phonegap-build/PushPlugin用于处理推送通知的 Cordova 插件。一切都已设置完毕并可以运行;我确实收到推送通知。
为了能够处理(i.e.处理)我已注册的推送通知onNotification
事件监听器,适用于 Android 和 iOS。
在处理到达的推送通知时,我必须考虑三种情况:
- 推送到达→用户按下通知→应用程序从冷启动启动(应用程序未运行)→使用索引文件中可用的“onNotification”方法处理有效负载,并将用户重定向到推送通知中指定的位置有效载荷
- 推送到达→用户按下通知→应用程序在后台(即运行)启动,但用户尚未离开索引文件→使用索引文件中可用的`onNotification`方法处理有效负载,并且用户被重定向到推送通知有效负载中指定的位置
- 推送到达 → 用户按下通知 → 应用程序在后台(即运行)启动,但用户已经离开索引文件,因为过去已经重定向到网站,并且不再访问 `onNotification` 方法因为它在新网站中不存在→用户完全停留在原来的位置并且没有被重定向到新位置
My issue
场景 1. 和 2. 工作正常,因为我可以访问附加的通知侦听器,并且它们可以处理有效负载并实现我随有效负载发送的位置属性,以确定用户将被重定向到的位置。
然而,在场景 3 中,用户已被重定向出索引文件(并重定向到外部网站)以及从技术上讲索引的范围,因此从现在开始我无法再访问索引文件中可用的方法,包括onNotification
方法。
因此,当用户收到推送通知时,我无法将用户重定向到新位置。
所以我的问题是:
离开索引文件后,如何处理新到达的推送通知负载?是否有更好的替代方案可以简单地将网站包含在索引中,从而使以前定义的方法可以在我需要时使用?
谢谢。
Edit
有人向我指出应用内浏览器 https://cordova.apache.org/docs/en/3.0.0/cordova_inappbrowser_inappbrowser.md.html插件可能会通过向浏览器提供回调函数或代码注入来提供我正在寻找的内容。今晚我会尝试一下,然后带着一份报告回来,同时,如果您碰巧对情况有更好的了解,我将不胜感激。:)