【发布时间】:2012-10-10 19:18:20
【问题描述】:
应用程序位于 PhoneGap 中。我正在使用带有https://github.com/marknutter/GCM-Cordova的推送通知功能@
我实现了整个功能,直到昨天它都运行良好。当我昨天检查应用程序时,当应用程序未运行时,推送通知不起作用。所有通知都在我的设备上接收,点击消息打开应用程序。
但是控件在消息通知处理的 javascript 部分没有接收到。
文件 GCMIntentService.java 中的代码:
JSONObject json;
json = new JSONObject().put("event", "message");
json.put("message", extras.getString("message"));
json.put("link", extras.getString("link"));
Log.v(ME + ":onMessage ", json.toString());
GCMPlugin.sendJavascript( json );
// Send the MESSAGE to the Javascript application
收到消息后,此代码将起作用。但此时,App 并没有运行。
当我点击通知消息时,应用程序照常打开,不注册消息事件;从而无法获得 JavaScript 中的控件来处理推送通知。
CORDOVA_GCM_script.js 的代码位于:
https://github.com/marknutter/GCM-Cordova/blob/master/assets/www/CORDOVA_GCM_script.js
注意:应用运行时可以正常使用。
编辑: 通知有时会运行。 JavaScript 随机获取消息事件。
编辑 2:
我绝对知道问题所在。
从 java 文件中,它在通过单击推送通知消息打开应用程序时触发 javascript 代码。但是当时没有加载WebView,所以无法执行脚本(这是一个事件触发器)。是不是这种情况,每个使用插件的人都会有同样的体验。有什么解决方法或解决方法吗?
我做错了什么吗?
【问题讨论】:
-
推送通知的重点在于,当您的应用程序未运行时,它会在后台运行。因此,如果您的应用程序没有运行并且在这种情况下,它是一个 WebView,我认为它不会从本机端接收任何内容,因为 JVM 不会在后台运行 WebView,这解释了为什么您的 JS 部分没有t 在应用程序未运行时运行。当您收到推送通知时,您必须考虑将通知数据存储在共享偏好或其他东西中;每次启动您的应用时检查它,以便您可以对其做出反应。
-
这是一个常见的实现,我没有发现其他人报告的任何问题,这让我感到困惑..
标签: android cordova push-notification google-cloud-messaging