Google Cloud Messaging for Android库与Google Play服务的区别

14

目前的Google GCM文档要求您安装Google Play服务并使用它们进行GCM(Google云消息传递)。该库大小为1.1MB,而我的当前.apk文件只有一半大小。我的应用旨在接收GCM并在屏幕上显示一些数据,因此我不需要Google Play服务的地图API、G+登录等,也不需要在获得GCM后能够向服务器回复。

SDK管理器允许下载和安装独立的Android Google云消息传递包。这是在Google I/O 2013之前使用的那个。

我的问题是:GPS的GCM和独立的Android GCM之间的性能差异是什么?我真的必须切换到GPS吗?独立的GCM是否已被废弃?我仍然可以使用独立的GCM接收数据(最多4K)吗?

5个回答

9
据我所知,旧版已被弃用(在这里http://developer.android.com/reference/gcm-packages.html中有说明),但仍然可用。
我建议使用Play服务版本,因为它更容易配置和使用,如果您不需要G+登录或其他任何功能,那么您不必使用它。是的,您的APK文件会稍微大一些,但我认为这值得。
此外,任何新功能或协议改进都很可能只适用于Play服务库,而不适用于旧版。

我的问题可能听起来很蠢,请告诉我如何发送通知?我已经阅读了一些教程http://techlovejump.in/2013/11/android-push-notification-using-google-cloud-messaging-gcm-php-google-play-service-library/,其中创建了php文件,但是要把它们放在哪里?安卓应用程序如何与这些文件进行通信? - android_newbie
http://rmarcejaeger.com/2015/09/18/tutorial-how-to-implement-push-notifications-using-google-cloud-messaging-for-android-part-1-client-app - Kyaw Min Thu L

3

虽然旧版的GCM已被弃用,但它仍然可以工作。而且有可能会在未来一段时间内继续工作。 个人经验是使用Play服务实现新版GCM时会出现问题,因为某些设备无法获取注册ID,会出现“SERVICE_NOT_AVAILABLE”错误。因此,经过一些研究后,我找不到解决方法,于是回归使用使用GCMIntentService的旧版GCM方法,并成功获取了注册ID。 底线是:看起来您可以暂时使用旧版GCM方法。


1
使用Play服务时,只要使用Proguard,就不用太担心应用程序大小的增加。 Google Play服务客户端库的描述提到:
如果在构建过程中使用ProGuard,则客户端库的占用空间很小,因此不会对应用程序文件大小产生负面影响。
我自己没有测量过两种不同方法的apk差异。如果我这样做了,我会更新的。

1
不仅仅是 APK 大小的问题。GPS 中方法引用的数量非常庞大(近 11000 个)。如果您有一个大型应用程序(就像我们一样),这可能会导致您的应用程序无法再构建为单个 DEX 文件。 - dkneller
1
Play services 6.5解决了这个问题。在这里看一下:http://android-developers.blogspot.in/2014/11/google-play-services-65.html - Atul Goyal
我不确定它是否解决了问题。由于我们仍在使用ANT构建,并且没有更新将库拆分为子集库(在SDK中),因此仍可能存在问题。看起来子集库是Maven工件,因此我将尝试使用Maven管理它们,如果基本的GCM实现很小,则可能是一个解决方案。 - dkneller

0
新的GCM方法还使用了GcmIntentService,在那里保留了接收到消息的处理配置,并在那里配置了我的sendNotification(msg)方法。

当GCM连接服务器将消息传递给您的客户端应用程序时,BroadcastReceiver会将消息作为意图接收。您可以在BroadcastReceiver中处理意图,也可以将处理意图的工作委托给服务(通常是IntentService)。如果使用服务,则广播接收器应该是WakefulBroadcastReceiver的实例,以在服务执行其工作时保持唤醒锁定。 - user2164757
1
谷歌的新建议是用GCMReceiverGcmListenerService替换WakefulBroadcastReceiver - Alexander Farber

-1

检查设备以确保其具有Google Play服务APK。如果没有,请显示一个对话框,允许用户从Google Play商店下载APK或在设备的系统设置中启用它。

这将节省您的项目内存大小。


这对你的 APK 大小没有影响。就像往常一样,APK 会针对一个存根实现进行编译,并链接到设备上的实际库(无论是已经存在还是可下载的)。 - dkneller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接