2013-07-01 26 views
0

我對Java和Android開發都很新,所以希望這個問題足夠具體: 我想用GoogleCloudMessaging來編寫一個Hello World應用程序。現在,我希望我的應用程序向googleapis服務器註冊,獲取註冊ID,並將其發送到我的服務器。稍後我會擔心服務器響應。我將使用包:GoogleCloudMessaging Hello World註冊

import com.google.android.gms.gcm.GoogleCloudMessaging 

我知道,我需要使用下面的代碼到我的設備註冊到雲:

GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); 
String registrationId = gcm.register(senderId); 

我的問題是我把這個在哪裏?在我的MainActivity onCreate()?我認爲我不能這樣做,因爲它是主線程上的網絡IO,但是如果我創建一個AsyncTask,我該如何使它能夠讓我的主線程看到我的registrationId,以便稍後可以使用ID調用send函數它?

(我知道有辦法通過GCM服務器做雙向的消息,但我還是想知道怎麼做了這種方式。謝謝!)

回答

0

首先,你必須使用的AsyncTask ,因爲註冊方法被阻塞,並且不能被主線程調用。

您可以將註冊ID保存在共享偏好設置中並從任何地方訪問。請參閱GCM程序員指南中的deno代碼。

至於使用send方法,你只能用它來讓設備去雲端消息,這是從你的應用到你的服務器的消息。要讓這些消息到達您的服務器,您的服務器必須與GCM服務器建立XMPP連接。

對於簡單的雲到設備消息傳遞,您可以通過HTTP API將消息從服​​務器發送到您的應用程序。

+0

謝謝Eran的迴應。 – user2537523