从服务器向应用程序发送消息 - 连接GCM

时间:2012-08-09 13:56:28

标签: android google-cloud-messaging

我尝试使用http://developer.android.com/guide/google/gcm/gs.html

中的Google Cloud Messaging实施应用程序
Sender sender = new Sender(myApiKey);

                Message message = new Message.Builder()
                .collapseKey("1")
                .timeToLive(3)
                .delayWhileIdle(true)
                .addData("message", "message is created at builder")
                .build();

                Result result = sender.send(message, reGid, 5);
                System.out.println("result of message is "+result);

因此我得到一个消息ID,可以从控制台看到;但我想在我的设备上用祝酒词显示消息。

GCMIntentService.java:

@Override
protected void onMessage(Context arg0, Intent arg1) {
    Log.i(TAG, "new message= ");
    Toast.makeText(this, arg1.getStringExtra("message"), Toast.LENGTH_SHORT)
            .show();
}

来自GCM高级主题:

当第三方服务器向GCM发布消息并收回消息ID时,并不意味着消息已经传递给设备。相反,它意味着它被接受交付。消息被接受后会发生什么取决于许多因素。 在最佳情况下,如果设备已连接到GCM ,屏幕已打开,并且没有限制限制(请参阅限制),消息将立即发送。

我无法理解“设备连接到GCM ”的含义。 设备如何连接GCM,连接互联网和从设备运行应用程序是不够的?

2 个答案:

答案 0 :(得分:2)

连接到GCM取决于一些事项。

  1. 设备已注册接收消息 - GCMRegistrar.register
  2. 设备具有允许传递消息的连接
  3. 设备符合安装软件的某些要求,允许传递信息 - 即Google API - 最低SDK 2.2
  4. <强>更新 当您发送消息时,您会收到状态响应,如果一切正常,则表示消息ID。发送消息的设备将不会收到消息,除非消息已发送到该设备(使用已注册的GCM ID设备)。设备注册ID在设备调用后返回。

    请注意,使用GCM无法保证邮件将被传递。它通常非常可靠,但如果交付很关键,则不应使用。

    是onMessage()是设备收到新消息的入口点。

答案 1 :(得分:2)

您应该点击此链接获取所有问题的答案:

http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

您只需要实现客户端和服务器。我已经在我自己的PC上实现并运行了代码。
我已经在PC上测试了移动设备。

源代码可用。您只需下载并按照一些简单的步骤操作。

我打赌你会在30分钟内运行你的代码。

乐意帮助!!