【问题标题】:Google Cloud Messaging for Android library vs. Google Play Services适用于 Android 库的 Google Cloud Messaging 与 Google Play Services
【发布时间】:2013-08-27 19:23:47
【问题描述】:

当前的Google GCM documentation 要求您安装 Google Play 服务并将其用于 GCM(Google 云消息传递)。库是 1.1MB,但我当前的 .apk 是那个大小的一半。我的应用是为了接收 GCM 并在屏幕上显示一些数据,所以我不需要 Google Play Services 的 Maps API、G+ 登录等。我也不需要在得到 GCM 后能够回复服务器。

SDK 管理器允许下载和安装独立的 Google Cloud Messaging for Android 软件包。它是在 Google I/O 2013 之前使用的,在 Google I/O 上发布了 Play Services。

我的问题是:GPS 的 GCM 和 Android 的独立 GCM 在性能上有何不同?我真的必须切换到 GPS 吗?独立 GCM 是否已弃用?我仍然可以使用独立 GCM 接收数据(最高 4K)吗?

【问题讨论】:

    标签: android android-c2dm


    【解决方案1】:

    据我所知,是的,旧的已被弃用(这里说是http://developer.android.com/reference/gcm-packages.html),但仍然有效。

    不过,我建议使用 Play Services 版本,因为它更易于配置和使用,而且如果您不需要 G+ 登录或其他任何东西,则不必使用它。是的,你的 APK 会大一点,但我认为这是值得的。

    此外,协议的任何新功能或改进很可能仅适用于 Play Services 库,而不适用于旧库。

    【讨论】:

    【解决方案2】:

    旧的 GCM 虽然已弃用,但仍然有效。而且它有可能会再工作一段时间。 就个人而言,我使用播放服务实现了新的 GCM,它似乎有问题,因为有些设备无法获取注册 ID 并出现 SERVICE_NOT_AVAILABLE 错误。因此,经过一番研究,我无法找到解决方案,并恢复到使用 GCMIntentService 的旧 GCM 方法,并且我能够取回注册 ID。 底线:似乎您可以暂时使用旧的 GCM 方法。

    【讨论】:

      【解决方案3】:

      只要您使用 Proguard,在使用 GCM 并使用 Play Services 时,您不必担心会增加应用程序大小。

      The Google Play services client library 提及的描述

      如果您使用 ProGuard 作为一部分,客户端库的占用空间很小 你的构建过程,所以它不会对你的 应用的文件大小。

      我自己没有用两种不同的方法测量过 apk 的差异。如果我这样做会更新。

      【讨论】:

      • 这不仅仅是 APK 的大小。这是 GPS 中方法引用的绝对数量(近 11000 个)。如果您有一个大型应用程序(就像我们一样),这可能会导致您的应用程序不再构建到单个 DEX 文件中
      • Play services 6.5 解决了这个问题。看这里:android-developers.blogspot.in/2014/11/…
      • 我不确定它是否能解决问题。由于我们仍在使用 ANT 构建并且没有更新将库分解为子库(在 SDK 中),因此仍然可能存在问题。看起来子库是 Maven 工件,所以我将看看我们是否可以使用 Maven 管理它们,在这种情况下,它可能是一个解决方案,具体取决于基本 GCM 实现有多小
      【解决方案4】:

      新的 GCM 方法还使用 GcmIntentService 接收消息的句柄配置以及我配置我的 sendNotification(msg) 方法的位置

      【讨论】:

      • "当 GCM 连接服务器将消息传递到您的客户端应用程序时,BroadcastReceiver 会接收消息作为意图。您可以在 BroadcastReceiver 中处理意图,也可以将处理工作交给服务的意图(通常是 IntentService)。如果您使用服务,您的广播接收器应该是 WakefulBroadcastReceiver 的一个实例,以便在服务执行其工作时保持唤醒锁。 developer.android.com/reference/com/google/android/gms/gcm/…
      • New Google recommendation 是将WakefulBroadcastReceiver 替换为GCMReceiverGcmListenerService
      【解决方案5】:

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

      它将为您节省项目内存大小。

      【讨论】:

      • 这与您的 APK 大小无关。与往常一样,APK 是针对存根实现编译的,并链接到设备上的实际库(已经存在或可下载)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多