App未运行时,GCM Cordova推送通知无法正常工作

Ive*_*nMS 7 android push-notification cordova google-cloud-messaging

该应用程序在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
Run Code Online (Sandbox Code Playgroud)

收到消息后,此代码将起作用.但那时,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没有加载,因此无法执行脚本(这是一个事件触发器).这是条件,每个使用插件的人都会遇到同样的情况.是否有任何解决方法或任何修复方法?

我做错了吗?

Ive*_*nMS 4

如果应用程序未运行,使用 GCM-Cordova 插件将无法正确处理通知。这是因为插件启动 javascript 时 WebView 尚未加载。

解决方案:

  • 修改了插件代码,以在通知到达时将消息数据保存为临时数据。
  • 创建了另一个插件,其中包含读取此加载数据和清除数据的方法。
  • 在 deviceready 上调用我的自定义插件方法并检查是否有任何数据。
  • 如果有,则清除本地存储的数据,并调用显示通知消息的方法。

最终能够在两个插件的帮助下解决这个问题 - GCM-Cordova 和自定义插件。

  • 这对我来说并不能解决问题,因为我在消息中发送的数据用于在手机上设置闹钟,并且用户可能不会重新访问该应用程序。 (2认同)