2013-08-27 126 views
14

當前Google GCM documentation要求你安裝谷歌播放服務,並使用他們的GCM(谷歌雲通訊)。該庫是1.1MB,但我現在的.apk只有這個尺寸的一半。我的應用程序旨在接收GCM並在屏幕上顯示一些數據,因此我不需要Google Play服務的Maps API,G +登錄等。我無需在獲得GCM後能夠回覆服務器。谷歌雲端通訊Android的圖書​​館與谷歌播放服務

SDK管理器,下載和安裝谷歌的獨立雲消息對Android包。它是Google I/O 2013之前使用的那個,Play服務宣佈的地方。

我的問題是:什麼是GPS的GCM和獨立GCM爲Android之間的性能差異?我真的必須切換到GPS嗎?獨立GCM是否已被刪除?我仍然可以使用獨立GCM接收數據(最高4K)嗎?

回答

9

據我所知,是的,舊的被棄用(它是這麼說的這裏http://developer.android.com/reference/gcm-packages.html),但仍然有效。

我會建議使用Play服務版本,雖然,因爲它更容易配置和使用,如果你不需要G +登錄或其他任何東西,你不必使用它。是的,你的APK會更大一點,但我認爲這是值得的。

此外,任何新功能或改進的協議將極有可能只針對Play服務庫,而不是舊的。

+0

我的問題聽起來很愚蠢,但請告訴我如何發送通知?我已閱讀了一些教程http:// techlovejump。在/ 2013/11/android-push-notification-using-google-cloud-messaging-gcm-php-google-play-service-library /在哪個php文件被創建,但在哪裏讓他們? Android應用程序將如何與這些文件進行通信? –

+0

http://rmarcejaeger.com/2015/09/18/tutorial-how-to-implement-push-notifications-using-google-cloud-messaging-for-android-part-1-client-app –

3

舊的GCM雖然不推薦使用,但仍然有效。而且它有可能會在更長的時間內工作。 就我個人而言,我使用播放服務實現了新的GCM,它似乎是越野車,因爲有設備無法獲得註冊ID並得到SERVICE_NOT_AVAILABLE錯誤。所以經過一番研究之後,我無法找到解決方案,然後恢復到使用GCMIntentService的舊GCM方法,並且我能夠找回註冊ID。底線:似乎您可以暫時使用舊的GCM方法。

0

新GCM方法也使用在那裏停留收到的消息手柄配置GcmIntentService並在那裏我配置了我的sendNotification時(MSG)方法

+0

「When a a GCM連接服務器將消息傳遞到您的客戶端應用程序,BroadcastReceiver接收消息作爲意圖,您可以在BroadcastReceiver中處理意圖,也可以將意圖處理的工作傳遞給服務(通常爲IntentService) 。如果您使用服務,您的廣播接收器應該是WakefulBroadcastReceiver的一個實例,以便在服務完成時持有喚醒鎖。「 http://developer.android.com/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html – 2013-09-26 09:08:17

+1

[Google新建議](https://developers.google.com/cloud-messaging/android/client)是用'GCMReceiver'和'GcmListenerService'來代替'WakefulBroadcastReceiver'。 –

1

你不需要擔心太多關於增加應用程序的大小,而使用GCM只要您使用Proguard,就可以使用Play服務。

The Google Play services client library說明提到

客戶端庫具有光的足跡,如果你使用ProGuard爲你構建過程的一部分 ,所以它不會對你的 應用程序的文件大小產生不利影響。

我還沒有自己測量apk與兩種不同方法的差異。如果我這樣做會更新。

+1

這不僅僅是APK的大小。這是GPS中大量的方法參考(近11000)。如果您有一個大型應用程序(就像我們這樣做),這可能會導致您的應用程序不再構建到一個DEX文件中 – dkneller

+1

Play服務6.5解決了這個問題。看看這裏:http://android-developers.blogspot.in/2014/11/google-play-services-65.html –

+0

我不知道它解決了這個問題。由於我們使用ANT構建仍然沒有更新將庫分成子集庫(在SDK中),所以仍然可能存在問題。看起來子集庫是Maven工件,所以我要看看我們是否可以用Maven管理它們,在這種情況下,它可能是一個解決方案,具體取決於基本GCM實現的小小。 – dkneller

-1

檢查設備以確保它具有Google Play服務APK。如果沒有,請顯示一個對話框,允許用戶從Google Play商店下載APK或在設備的系統設置中啓用它。

它可以節省您的項目內存大小。

+0

這對您的APK無關緊要尺寸。與往常一樣,APK是針對存根實現進行編譯的,並與設備上的實際庫(已存在或可下載)進行鏈接。 – dkneller