0

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

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

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

4

4 回答 4

0

我使用了不同的插件来获取状态栏通知,在以下位置找到它:

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

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

window.plugins.statusBarNotification.notify("把你的标题放在这里", "把你的消息放在这里");

工作得很好,唯一的问题是如何唤醒设备......我会尽快找到它的答案。

我找到了一种唤醒设备的方法,抱歉我忘了早点回复:

诀窍是在 JAVA 代码中的 GCM 服务的接收器模块中创建一个挂起的意图,然后该挂起的意图被应用程序的主要活动接收,活动和活动被加载到 ram 中。然后 GCM 服务等待五秒钟,以便主要活动完成加载......然后接收通知并将其发送给科尔多瓦......对我有用,但您可能还想在您提出之前检查活动是否已经在运行待定意图。

下面添加 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) {
        }
    }
}
于 2012-11-20T12:18:33.567 回答
0

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弹窗的好地方。

于 2012-08-07T14:45:23.207 回答
0

Mark 的插件效果很好,但在应用程序未运行时我无法让它工作。它是一个已知的错误。

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

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

于 2012-08-29T17:00:43.003 回答
0

这篇文章让这一切发生...

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

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

于 2013-05-21T15:14:43.983 回答