cloud - Android 谷歌云消息传递示例无法正常工作

标签 cloud messaging google-cloud-messaging

我正在关注这里的教程 http://developer.android.com/google/gcm/gs.html为了设置 GCM。 我目前正在尝试注册设备。 然而,由于某种原因,应用程序似乎总是崩溃 gcm = GoogleCloudMessaging.getInstance(this);

堆栈跟踪似乎指向以下内容: 06-18 13:42:20.909:I/dalvikvm(11613):找不到方法com.google.android.gms.gcm.GoogleCloudMessaging.getInstance,从方法pushNotification.PushNotification$1.run引用

这是我迄今为止所拥有的示例

public PushNotification(Context c, Activity activity)
{
    context = c;
    this.activity = activity;
    regid = getRegistrationId(context);

    if (regid.length() == 0) {
        Log.d("IN PUSHNOTIFICATION ","NOT REGISTERED. REGISTERING NOW.....");
        registerBackground();
    }
    Log.d("IN PUSHNOTIFICATION ","REGISTRATION COMPLETE.....");
    Log.d("IN PUSHNOTIFICATION ","REGISTRATION ID IS: " + regid);
    gcm = GoogleCloudMessaging.getInstance(activity); //never reaches this code

}

private void registerBackground() {

    Thread thread = new Thread(new Runnable()
    {
        public void run()
        {
            String msg = "";
            try {
                if (gcm == null) {
                    Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. gcm == NULL");
                    gcm = GoogleCloudMessaging.getInstance(context);
                    Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. AFTER gcm.GETINSTANCE");
                }
                Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. BEFORE gcm.register");
                regid = gcm.register(SENDER_ID);
                msg = "Device registered, registration id=" + regid;
                Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. regid == " + regid);
                // You should send the registration ID to your server over HTTP,
                // so it can use GCM/HTTP or CCS to send messages to your app.

                // For this demo: we don't need to send it because the device
                // will send upstream messages to a server that echo back the message
                // using the 'from' address in the message.

                // Save the regid - no need to register again.
                setRegistrationId(context, regid);
            } catch (IOException ex) {
                Log.d("IN PUSHNOTIFICATION", "IN BACKGROUND. EXCEPTION ERROR ERROR: ex = " + ex.getMessage());
                msg = "Error :" + ex.getMessage();
            }
        }
    }
    );
    thread.start();
}

这是完整的堆栈跟踪

06-18 13:42:20.909: D/IN PUSHNOTIFICATION(11613): NOT REGISTERED. REGISTERING NOW..... 06-18 13:42:20.909: I/dalvikvm(11613): Could not find method com.google.android.gms.gcm.GoogleCloudMessaging.getInstance, referenced from method pushNotification.PushNotification$1.run 06-18 13:42:20.909: W/dalvikvm(11613): VFY: unable to resolve static method 5967: Lcom/google/android/gms/gcm/GoogleCloudMessaging;.getInstance (Landroid/content/Context;)Lcom/google/android/gms/gcm/GoogleCloudMessaging; 06-18 13:42:20.909: D/dalvikvm(11613): VFY: replacing opcode 0x71 at 0x0015 06-18 13:42:20.909: I/dalvikvm(11613): Could not find method com.google.android.gms.gcm.GoogleCloudMessaging.register, referenced from method pushNotification.PushNotification$1.run 06-18 13:42:20.909: W/dalvikvm(11613): VFY: unable to resolve virtual method 5969: Lcom/google/android/gms/gcm/GoogleCloudMessaging;.register ([Ljava/lang/String;)Ljava/lang/String; 06-18 13:42:20.909: D/dalvikvm(11613): VFY: replacing opcode 0x6e at 0x0039 06-18 13:42:20.909: D/IN PUSHNOTIFICATION(11613): REGISTRATION COMPLETE..... 06-18 13:42:20.909: D/IN PUSHNOTIFICATION(11613): REGISTRATION ID IS: 06-18 13:42:20.909: D/AndroidRuntime(11613): Shutting down VM 06-18 13:42:20.909: W/dalvikvm(11613): threadid=1: thread exiting with uncaught exception (group=0x2b542210) 06-18 13:42:20.909: D/IN PUSHNOTIFICATION(11613): IN BACKGROUND. gcm == NULL 06-18 13:42:20.909: W/dalvikvm(11613): threadid=20: thread exiting with uncaught exception (group=0x2b542210) 06-18 13:42:20.909: I/Process(11613): Sending signal. PID: 11613 SIG: 9 06-18 13:42:20.919: I/ActivityManager(278): Process com.gotoohlala (pid 11613) has died.

最佳答案

我解决了这个问题。 虽然我链接到 google-play-services_lib 项目,但我还必须将 jar 文件 google-play-services_lib.jar 添加到项目中。

关于cloud - Android 谷歌云消息传递示例无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17175804/

相关文章:

android - Google Cloud Messaging 是否会向处于待机模式的设备发送消息?

scala - 在云中部署和托管 scala?

google-cloud-platform - 如何设置从本地到 Google Cloud VPC 的 VPN

ios - 通过 iOS 上的 <input type=file> 上传存储在云服务上的 0 字节文件

javascript - p2p/NodeJS : Undocumented code does not tell us how to send messages through the network

algorithm - 我可以使用 Unix 时间作为 Lamport 时间戳吗?

message-queue - 如何有选择地从 AMQP(RabbitMQ)队列中删除消息?

java - 通知取代了 Android 中的旧版本

azure - 如何将角色添加到二头肌格式的资源组?

android - 新 GCM API 注册未知来源错误