Phonegap – 处理推送通知一旦我已经离开索引范围与window.location.replace

我正在使用Phonegap 4.2(基于Cordova 5.0)来创build一个跨平台的应用程序。

该应用程序适用于Android和iOS

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

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

使用iFrames似乎不是一个select,只是简单地包含在索引文件的网站,由于网站只是出现空白或其他一些问题 – 虽然我可能是错的,但这是一个脱离主题(可能会修复我即将提出的整个问题)。

读过一些文章( antonylees , Stackoverflow等)后,我简单地使用window.location.replace(externalUrl); 访问该网站。 它工作完美。 (请注意,构build网站并将其包装到我的应用程序不是一个选项,因为它太重了)。

到现在为止还挺好

我正在使用PushPlugin Cordova插件来处理推送通知。 一切都build立和运作; 我确实收到推送通知。

为了能够处理( 处理)我已经注​​册onNotification事件监听器的推送通知,Android和iOS。

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

  1. 推送到达→用户按通知→应用程序从冷启动(应用程序未运行)→通过索引文件中的“onNotification”方法处理有效内容,用户redirect到推送通知中指定的位置有效载荷
  2. 推送到达→用户按通知→应用程序在后台启动(即运行),但用户还没有离开索引文件→有效载荷通过索引文件中的“onNotification”方法处理,用户被redirect到推送通知的有效载荷中指定的位置
  3. 推送到达→用户按通知→应用程序在后台启动(即运行),但用户已经离开了索引文件,已经过去redirect到网站,并且不再访问`onNotification`方法因为它在新网站中不存在→用户停留在原来的位置并且没有被redirect到新的位置

我的问题

情况1和2工作正常,因为我可以访问附加的通知侦听器,他们可以处理有效负载,并实现我发送有效负载的位置属性,以确定用户将被redirect到的位置。

然而,在场景3中,用户已经被redirect到了索引文件(和外部网站)之外,从技术上说是索引的范围,所以从现在开始,我不再能够访问索引文件中可用的方法,包括onNotification方法。

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

所以我的问题是:

如何在离开索引文件后处理新到达的推送通知有效内容? 有没有更好的select,只是简单地包括在索引网站,从而使以前定义的方法可供使用,只要我需要他们?

谢谢。

编辑

我已经指出, InAppBrowser插件可以提供一个callback函数或代码注入到浏览器中。 今晚我会尝试一下,回来一个报告,同时,如果你碰巧遇到了一个更好的线索,我会很感激的。

Solutions Collecting From Web of "Phonegap – 处理推送通知一旦我已经离开索引范围与window.location.replace"

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

新加载的页面能够访问以前定义的方法,我也能够注入一些代码,并添加一些基于事件的监听器到新分配的页面,如果我对此感兴趣,但这不是必需的。