2013-05-17 45 views
3

我將GCM整合到我的應用程序中(基於Google的文章this)。他們聲稱「它還提供了一個簡化的註冊API,建議。」我覺得這是屁股疼痛。我經歷了幾個問題層的戰鬥,現在我卡在下列之一:Android GCM的問題

文中提到:

  • MyBroadcastReceiver(在清單)和GcmBroadcastReceiver(代碼)。

    我認爲這是清單中的同樣的事情,正確的名稱應該是GcmBroadcastReceiver

  • MyIntentService(在清單),並在代碼中都沒有提到。

    據我所知,這是一項服務,應擴展/實施GCMBaseIntentService

此服務的事情混淆了我很多:

  • 我使用String regID = GoogleCloudMessaging.register(SENDER_ID);。在這種情況下,GCMBaseIntentService.onRegistered()似乎不需要獲取REGID。

  • 此外,我有一個廣播接收器GcmBroadcastReceiver接收推送的消息。在這種情況下,GCMBaseIntentService.onMessage()是不必要的。

考慮到這一點,我有一種感覺,我應該要麼使用GCMBaseIntentService + GcmBroadcastReceiverGCMBaseIntentService

請問有人可以解釋一下這些應該與這個討厭的簡化的註冊API一起使用嗎?

回答

4

運行在移動設備上的Android應用程序通過調用GoogleCloudMessaging方法寄存器(senderID ...)註冊接收消息。此方法爲GCM註冊應用程序並返回註冊ID。 這種簡化的方法取代了以前的GCM註冊流程。

基於此,GCMBaseIntentService在使用新的註冊方法時已過時。它被GcmBroadcastReceiverGoogleCloudMessaging取代。

我不知道新註冊程序比舊註冊程序更好。如果您不打算使用GCM將消息從設備發送到雲端,則可以使用舊的GCMBaseIntentServiceThis link顯示了做事的舊方式。舊方式也需要廣播接收器,但是您使用Google提供的類,並且唯一需要編寫的代碼(除了啓動註冊之外)是延伸GCMBaseIntentService的類,其中實現了onRegisteredonMessage

如果您想使用新的「簡化」註冊,您只需要GcmBroadcastReceiver來處理消息,GoogleCloudMessaging.register需要註冊。

至於清單:

.MyIntentService是可選的:

的意圖服務來處理由廣播接收器接收的意圖。 可選。

.MyBroadcastReceiver大概指的是,你應該實現廣播接收器,以及GcmBroadcastReceiver就是這樣一個接收器的一個例子。