我正在使用 Phonegap 4.2(基于 Cordova 5.0)创建跨平台应用程序。
该应用程序适用于 Android 和 iOS。
当用户加载应用程序时,他位于 index.html
.从那里我可以访问各种 JavaScript 方法,基于原始的、基于 Cordova 的,而且我碰巧正在使用 jQuery v1.11.1。
当应用收到推送通知时,该应用必须能够访问 location
负载中的属性,然后从那里访问特别提到的目的地(例如“https://stackoverflow.com/questions/ask”)。我正在这样做。然后用户要么被重定向到该特定位置,即一个网站(无需打开浏览器,即离开应用程序),要么将该网站包含在索引文件中并替换其内容。
使用 iFrames
似乎不是一个选项,只是将网站包含在索引文件中,因为网站只是显示为空白或其他一些问题——虽然我可能是错的,但这有点偏离主题(可能会解决整个问题我即将提出的问题)。
在阅读了一些文章( antonylees 、 Stackoverflow 等)后,我得出了简单使用 window.location.replace(externalUrl);
的解决方案访问该网站。它完美地工作。 (请注意,构建站点并将其包装到我的应用程序中不是一种选择,因为它太重了)。
到目前为止,一切都很好
我正在使用 PushPlugin Cordova 插件来处理推送通知。一切都已设置并运行;我确实收到推送通知。
为了能够处理(即处理)我注册的推送通知onNotification
事件监听器,适用于 Android 和 iOS。
在处理到达的推送通知时,我必须考虑三种情况:
我的问题
场景 1. 和 2. 工作正常,因为我可以访问附加的通知监听器,并且它们可以处理负载并实现我与负载一起发送的位置属性,以确定将用户重定向到哪里。
然而,在场景 3 中,用户已被重定向出索引文件(并重定向到外部网站)和技术上索引的范围,因此从现在开始我不再可以访问索引文件中可用的方法,包括
onNotification
方法。因此,当他收到推送通知时,我无法将用户重定向到新位置。
所以我的问题是:
离开索引文件后,如何处理新到达的推送通知负载?是否有更好的替代方法来简单地将网站包含在索引中,从而使以前定义的方法可以在我需要时使用?
谢谢你。
编辑
有人向我指出 InAppBrowser插件可能会通过向浏览器提供回调函数或代码注入(inject)来提供我正在寻找的内容。我今晚会尝试一下并带回一份报告,与此同时,如果您碰巧对这种情况有更好的了解,我将不胜感激:)
最佳答案
使用 InAppBrowser的 .open(url, '_blank', args)
方法解决了我的问题。
新加载的页面能够访问之前定义的方法,如果我对此感兴趣,我还可以注入(inject)一些代码并向新分配的页面添加一些基于事件的监听器,但这根本不是必需的.
关于javascript - Phonegap - 使用 window.location.replace 离开索引范围后处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32119079/