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

时间:2012-08-06 16:36:59

标签: cordova google-cloud-messaging

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

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

有谁知道Phonegap的GCM插件是否能够执行此操作?

4 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

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

我遇到的一个大问题是,当应用程序处于脱机状态时,它会让它工作。 :(

答案 2 :(得分:0)

我使用了不同的插件来获取状态栏通知:

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) {
        }
    }
}

答案 3 :(得分:0)

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

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

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