javascript - Phonegap - 使用 window.location.replace 离开索引范围后处理推送通知

标签 javascript android jquery ios cordova

我正在使用 Phonegap 4.2(基于 Cordova 5.0)创建跨平台应用程序。

该应用程序适用于 Android 和 iOS。

当用户加载应用程序时,他位于 index.html .从那里我可以访问各种 JavaScript 方法,基于原始的、基于 Cordova 的,而且我碰巧正在使用 jQuery v1.11.1。

当应用收到推送通知时,该应用必须能够访问 location负载中的属性,然后从那里访问特别提到的目的地(例如“https://stackoverflow.com/questions/ask”)。我正在这样做。然后用户要么被重定向到该特定位置,即一个网站(无需打开浏览器,即离开应用程序),要么将该网站包含在索引文件中并替换其内容。

使用 iFrames似乎不是一个选项,只是将网站包含在索引文件中,因为网站只是显示为空白或其他一些问题——虽然我可能是错的,但这有点偏离主题(可能会解决整个问题我即将提出的问题)。

在阅读了一些文章( antonyleesStackoverflow 等)后,我得出了简单使用 window.location.replace(externalUrl); 的解决方案访问该网站。它完美地工作。 (请注意,构建站点并将其包装到我的应用程序中不是一种选择,因为它太重了)。

到目前为止,一切都很好

我正在使用 PushPlugin Cordova 插件来处理推送通知。一切都已设置并运行;我确实收到推送通知。

为了能够处理(即处理)我注册的推送通知onNotification事件监听器,适用于 Android 和 iOS。

在处理到达的推送通知时,我必须考虑三种情况:

  • 推送到达 → 用户按下通知 → 应用程序从冷启动(应用程序未运行)启动 → 有效载荷使用索引文件中可用的 `onNotification` 方法进行处理,并将用户重定向到推送通知中指定的位置有效载荷
  • 推送到达 → 用户按下通知 → 应用程序在后台启动(即运行),但用户尚未离开索引文件 → 使用索引文件中可用的 `onNotification` 方法处理负载并重定向用户到推送通知的有效负载中指定的位置
  • 推送到达→用户按下通知→应用程序在后台启动(即运行),但用户已经离开索引文件,过去已经被重定向到网站,并且不再访问`onNotification`方法因为它不存在于新网站中 → 用户原地停留在他所在的位置并且没有被重定向到新位置

  • 我的问题

    场景 1. 和 2. 工作正常,因为我可以访问附加的通知监听器,并且它们可以处理负载并实现我与负载一起发送的位置属性,以确定将用户重定向到哪里。

    然而,在场景 3 中,用户已被重定向出索引文件(并重定向到外部网站)和技术上索引的范围,因此从现在开始我不再可以访问索引文件中可用的方法,包括 onNotification方法。

    因此,当他收到推送通知时,我无法将用户重定向到新位置。

    所以我的问题是:

    离开索引文件后,如何处理新到达的推送通知负载?是否有更好的替代方法来简单地将网站包含在索引中,从而使以前定义的方法可以在我需要时使用?

    谢谢你。

    编辑

    有人向我指出 InAppBrowser插件可能会通过向浏览器提供回调函数或代码注入(inject)来提供我正在寻找的内容。我今晚会尝试一下并带回一份报告,与此同时,如果您碰巧对这种情况有更好的了解,我将不胜感激:)

    最佳答案

    使用 InAppBrowser.open(url, '_blank', args)方法解决了我的问题。

    新加载的页面能够访问之前定义的方法,如果我对此感兴趣,我还可以注入(inject)一些代码并向新分配的页面添加一些基于事件的监听器,但这根本不是必需的.

    关于javascript - Phonegap - 使用 window.location.replace 离开索引范围后处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32119079/

    相关文章:

    javascript - Angular ui-router 无法加载,更不用说解决工厂依赖关系了

    javascript - 属性 'title' 的值已更改。如何让tooltip看懂呢?

    javascript - 生成器和 babel-node

    javascript - 如何在模板中运行可观察函数?

    java - 如何在有限制的情况下使用 getInt()(托管配置)?

    android - AutoCompleteTextView 设置错误

    java - 设置多个闹钟

    jquery - IE 中的 CSS 下拉问题

    JQuery - 将类添加到不包含类名的每个表备用表行

    javascript - Javascript 和 jquery 的任何特定顺序