2012-08-08 24 views

回答

4

您无法将消息发送给未注册的设备。

首先,这些设备应该使用GCMRegistrar.register进行注册并将registrationId发送到服务器,然后您就可以将消息发送到这些设备。

final String regId = GCMRegistrar.getRegistrationId(context); 

    if (!regId.equals("")) { 
     // Device is alredy registered. This checks whether it is registered 
     // on the server or not. 
     if (!GCMRegistrar.isRegisteredOnServer(context)) { 
      // Save regId to server 
      registerInBackground(context, regId); 
     } else { 
      Log.v(TAG, "Already registered"); 
     } 
    } else { 
     GCMRegistrar.register(context, senderId); 
    } 
+0

是的,我在我的应用程序中这样做过,但是当设备注册时,我怎么能知道deviceId发送给他们的文本? – 2012-08-08 14:26:05

+0

您可以使用以下方法检查设备是否在服务器上注册。 GCMRegistrar.isRegisteredOnServer(上下文) – 2012-08-08 14:27:58

+0

你是为了将它存储在你的服务器上。 – 2012-08-08 14:30:33

1

设备上的客户端从GCM库接收装置,它是那么应该通过正常渠道发送到服务器,以及任何你想要的识别信息注册ID 。您的服务器需要记住哪个RegID发送给哪个用户或设备。有关更多信息,请参阅:http://developer.android.com/guide/google/gcm/gs.html

2

无法将GCM消息发送给尚未注册的设备。

如果您需要对所有设备进行故障安全广播,那么让您的应用定期进行拉动可能会更好。一个带有版本号的web服务器上的一个简单的json文件就足够了,但真正的痛苦是判断多久,什么时候以及如何被拉。

相关问题