GCM Phonegap,如何将消息发送到手机的核心通知

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCM Phonegap,如何将消息发送到手机的核心通知相关的知识,希望对你有一定的参考价值。

我已经成功设置了在android应用程序上通过phonegap运行GCM的代码。我已设法保护手机注册ID,并能够在php脚本中使用此ID向应用程序发送消息。

我唯一的问题是,当应用程序打开时,消息显示为javascript警报,并且我希望在应用程序运行或未运行时将消息发送到手机的核心通知(类似于应用程序)。

有谁知道Phonegap的GCM插件是否能够做到这一点?

答案

Mark Nutter拥有Android C2DM Phonegap插件的分支,转换为使用GCM。

https://github.com/marknutter/GCM-Cordova

查看GCM-Cordova / src / com / cordova / gcm / GCMIntentService.java中的onMessage方法,它是StatusBarNotifications的好地方。

并查看GCM-Cordova / src / com / google / android / gcm / GCMBroadcastReceiver.java中的onReceive方法,这是Toast弹出窗口的好地方。

另一答案

Mark的插件效果很好,但是当应用程序没有运行时我无法正常工作。它是一个已知的bug。

请记住,插件不会进行系统通知。它只是将数据推送到你的手机......这很棒,因为它可以让你用这些数据做任何你想做的事情,并且可以用来推送带有一些本机代码的系统通知。

然而,我遇到的一个大问题是在应用程序脱机时让它工作。 :(

另一答案

我使用了一个不同的插件来获取状态栏通知,找到它:

https://github.com/phonegap/phonegap-plugins/tree/master/Android/StatusBarNotification

然后在设备上的gcm java脚本中的on receive函数中添加以下代码行:

window.plugins.statusBarNotification.notify(“把你的标题放在这里”,“把你的信息放在这里”);

工作得很好唯一的问题是如何唤醒设备...我会在找到它后立即发布答案。

我发现了一种唤醒设备的方法抱歉我忘记尽早发布回复:

诀窍是在JAVA代码中的GCM服务的接收模块中创建待定意图,然后应用程序的主要活动接收待处理的意图,活动和活动被加载到ram中。 GCM服务然后等待五秒钟,以便主要活动完成加载...然后重新发送通知并将其发送到cordova ...对我有用但你可能还想在你加注之前检查活动是否已经在运行未决的意图。

下面添加了GCM服务的代码

//Intent notifyIntent = new Intent("com.cordova2.gcm.MainActivity");

Context context2 = getApplicationContext();

  PendingIntent pendingIntent;
  Intent notifyIntent = new Intent();
  notifyIntent.setClass(context2, com.cordova2.gcm.MainActivity.class);
  pendingIntent =  PendingIntent.getActivity(context2, 0, notifyIntent, 0);
  try {
    pendingIntent.send();
} catch (CanceledException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}



long endTime = System.currentTimeMillis() + 5*1000;
while (System.currentTimeMillis() < endTime) {
    synchronized (this) {
        try {
            wait(endTime - System.currentTimeMillis());
        } catch (Exception e) {
        }
    }
}
另一答案

这篇文章让这一切成为现实......

http://www.adobe.com/devnet/phonegap/articles/android-push-notifications-with-phonegap.html

在标题为“状态栏通知”的步骤中,我选择使用java本机代码而不是javascript插件。

以上是关于GCM Phonegap,如何将消息发送到手机的核心通知的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap GCM-|Cordova 插件

无法获得缺少的 gcm 推送通知

如何使用谷歌云连接服务器发送上游 GCM 消息

当手机离线时,GCM 会存储消息列表或仅存储最后一条消息,就像 APNS 一样?

相同的服务器代码可以向 APNS 和 GCM 发送通知吗

使用 GCM 从 java 服务器向 android 手机发送希伯来语推送通知时出现乱码