2016-06-01 63 views
0

我正在嘗試在我的應用中實施GCM。該應用程序由一個用戶界面和一個在後臺運行的服務組成。該服務由啓動廣播接收器啓動,或者啓動App時啓動。在哪裏,何時和多久註冊一次Google Cloud Messaging

我跟着從谷歌提供的代碼示例,到目前爲止它的工作原理。 Google表示,您應該在您的活動中檢查onCreate()和onResume()中的播放服務。

我是否還應該檢查我服務中的播放服務(如果應用程序已啓動,請檢查播放服務是否失敗,用戶是否重新啓動設備,我的服務是否通過廣播啓動)?

此外,我真的需要添加onCreate()中的檢查,因爲onResume()在應用程序啓動時被調用嗎?

---更新---

好吧,我可能讓自己不夠清楚。我只消費GCM。接收者當然是一個廣播接收器,在我的清單中公開。

如果有消息進入,我會告訴我的服務要做些什麼。我問我是否應該在我的服務中檢查Play服務,以便我可以確保用戶知道如果未啓用Play服務,某些事情可能不起作用。

回答

0

我是否還應該檢查我服務中的播放服務(如果應用程序已啓動,請檢查播放服務是否失敗,用戶是否重新啓動設備,我的服務是否通過廣播啓動)?

我以前沒有嘗試過使用引導BroadcastReceiver,所以我不熟悉它,這就是爲什麼我不會評論一個總的答案。


還有我真的需要添加的onCreate()以來的onResume(檢查)被稱爲反正當應用程序啓動?

的原因,爲什麼他們所提出的建議要做到這一點,也可以在docs發現:依靠播放服務SDK應經常檢查設備的兼容谷歌Play服務的APK

應用在訪問Google Play服務功能之前。建議在兩個地方進行:主要活動的onCreate()方法和onResume()方法。 onCreate()中的支票可確保在沒有成功支票的情況下無法使用該應用程序。 onResume()中的檢查確保瞭如果用戶通過其他方式(例如通過後退按鈕)返回到正在運行的應用程序,該檢查仍然執行。


IF你認爲播放服務的檢查是必要的您在Service內開始任何事情之前,我認爲這是一個很好的舉措。

希望這有助於某種方式。乾杯! PS:順便說一句,如果你還沒有檢查出來,GCM現在有一個叫做的新版本。檢查出來。:d

站點位置:https://firebase.google.com/docs/cloud-messaging/

+0

我想我誤解了文檔的這段文字。現在我對此有更多的瞭解,這意味着如果我的應用在沒有Play服務的情況下無法運行,我應該檢查onCreate()並在失敗時完成活動。如果像我的情況一樣,有Play服務很好,但我不依賴它們,我只通過檢查onResume()就可以嗎? – xxtesaxx

+0

如果您確定您的應用不完全依賴播放服務,我認爲它沒有問題。 **但是**,我不完全確定是否違反最佳做法。乾杯! –

+1

我選擇這個答案是最好的,因爲它對我的幫助最大。經過對我的問題的更多思考後,我得出了這樣的結論:我將在BootBroadcastReceiver中的onResume()AND中檢查Play Service。我這樣做(而不是在onCreate())的原因是,能夠接收一個特定的GCM消息類型不會使我的應用程序無用。它仍然可以使用,它從不發送GCM。因此,我使用這些支票作爲友好的提醒,即用戶應該啓動Play服務。如果有人擔心他們的隱私,我甚至可能會包含一個設置來完全停用GCM – xxtesaxx

0

在FCM(以前GCM)的情況下,你應該檢查時您要使用谷歌播放服務的API,谷歌播放服務。如果您的服務可以通過重新啓動廣播啓動,並且您的服務使用FCM,那麼您應該在那裏檢查播放服務。因此,如果您的活動正在啓動該服務,則無需在活動中檢查Google Play服務。如果Google Play服務丟失,但該設備不會收到郵件,甚至無法獲得註冊令牌,則FCM不應對您的應用產生負面影響。

相關問題