2012-08-08 25 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文件就足夠了,但真正的痛苦是判斷多久,什麼時候以及如何被拉。

相關問題