2012-08-09 100 views
0

我尝试从http://developer.android.com/guide/google/gcm/gs.html从服务器 - 连接GCM

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

连接到GCM取决于几件事情。

  1. 该设备已注册到接收消息 - GCMRegistrar.register
  2. 该装置具有允许待递送
  3. 装置符合针对已安装软件的某些要求,允许消息的传递的消息的连接 - 即谷歌API的 - 最低SDK 2.2

UPDATE: 当您发送您收到一个状态响应它,如果一切正常的消息将意味着一个消息ID。除非邮件发送到该设备(使用设备注册的GCM ID),否则发送该邮件的设备将不会收到该邮件。设备注册ID在设备呼叫注册后返回。

请注意,GCM不能保证邮件将被发送。它通常非常可靠,但如果交付至关重要,则不应使用。

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

+1

1.和2.项目完成,但我不明白3.项目。设备有互联网连接,并在该应用程序运行后用Google帐户登录,但我无法获取Toast消息。你能解释3. item和onMessage方法是否正确? – user1451549 2012-08-10 12:45:24

2

您应该按照这个链接来获得你的所有问题的答案:

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

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

源代码可用。你只需要下载并遵循一些简单的步骤。

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

乐意帮忙!

+1

actuall我需要一个像开发人员站点样例中的java示例如何使用Message Message = new Message.Builder()。build();修改自定义消息 – shareef 2013-06-06 17:21:50