0

我尝试使用来自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 高级主题:

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

我不明白“设备已连接到 GCM ”是什么意思。设备如何连接 GCM、连接互联网并从设备运行应用程序还不够?

4

2 回答 2

2

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

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

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

源代码可用。 您只需要下载并执行一些简单的步骤。

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

很高兴能帮助你 !!

于 2012-11-30T06:56:26.417 回答
2

连接到 GCM 取决于几件事。

  1. 设备已注册接收消息 -GCMRegistrar.register
  2. 设备具有允许传递消息的连接
  3. 该设备满足允许传递消息的已安装软件的某些要求 - 即 Google API - 最低 SDK 2.2

更新: 当您发送消息时,您会收到状态响应,如果一切正常,则表示消息 ID。发送消息的设备将不会收到消息,除非消息已发送到该设备(使用设备注册的 GCM id)。设备注册 id 在设备调用注册后返回。

请注意,使用 GCM 无法保证消息会被传递。它通常非常可靠,但如果交付至关重要,则不应使用。

是的 onMessage() 是设备正在接收的新消息的入口点。

于 2012-08-09T14:13:40.567 回答