没有Google Play服务的设备有什么备用计划?

11

目前,我正在将之前使用 jar 库的 Google 服务迁移到 Google Play 服务。

  • Google AdMob
  • Google Analytics
  • Google Drive

然而,在迁移指南中,Google 没有提及对于没有安装 Google Play 服务或版本过旧的设备该如何处理。

那么,我们是应该忽略没有 Google Play 服务的用户呢,还是有备选计划?

维护单独的 jar 文件和遗留代码以备选计划会相当麻烦。同时,有可能会存在冲突问题,同时使用 jar 文件和 GPS。 Utilize both Play Services and AdMob SDK

2个回答

8

1. 检查 Google Play 服务

此处所述,您应始终确保:

  1. Google Play 服务 APK 存在。
  2. 已安装正确的版本。

通常,您会在 onResume() 方法中执行这些检查。 GooglePlayServiceUtils 有一个名为 isGooglePlayServicesAvailable(...) 的方法,可检查 Google Play 服务是否已安装并且版本正确。它返回一个 int 错误代码,告诉您大致出了什么问题:

@Override
public void onResume() {
    super.onResume();

    int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity());
    switch(errorCode) {
        case ConnectionResult.SUCCESS:
            // Google Play Services installed and up to date
            break;

        case ConnectionResult.SERVICE_MISSING:
            // Google Play services is missing on this device.
            break;

        case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
            // The installed version of Google Play services is out of date.
            break;

        case ConnectionResult.SERVICE_DISABLED:
            // The installed version of Google Play services has been disabled on this device.
            break;

        case ConnectionResult.SERVICE_INVALID:
            // The version of the Google Play services installed on this device is not authentic.
            break;

        case ConnectionResult.DATE_INVALID:
            // The device date is likely set incorrectly.
            break;          
    }
}

你可以使用GooglePlayServiceUtilsshowErrorDialogFragment(...)方法来显示适当的错误消息:
int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity());
if(GooglePlayServiceUtil.showErrorDialogFragment(errorCode, getActivity(), REQUEST_CODE)) {
    // Dialog was shown
} else {
    // Dialog was not shown.
}

当错误代码不是ConnectionResult.SUCCESS时,对话框才会显示。
您可以在这里找到GooglePlayServiceUtil类的文档。

2. 备用方案

你是否需要一个备选方案完全取决于你的应用程序和你所针对的市场。例如,如果你将其发布到Google Play商店——我假设你这样做了,因为你使用Google Play服务——那么你实际上不需要备选方案。因为人们要下载你的应用程序首先需要Google Play商店,如果他们有Google Play商店,那么他们就可以访问Google Play服务。当然,如果你想将其发布到Amazon设备或诺基亚商店等市场,情况就完全不同了,因为拥有这些设备的设备没有Google Play商店或Google Play服务。此外,在中国这样的市场中,几乎没有安装有Google Play商店或任何Google服务的Android设备,因此你必须决定是否有必要为你的应用程序提供备选方案,但是正如我所说,如果你将其发布到Google Play商店,那就不用担心了。我上面提到的检查和错误对话框应该足以确保你的应用程序能够正常工作。新版本的Google Play服务APK的推出通常非常快速。可能需要几天时间,但之后大多数设备都已经收到更新。你还必须考虑一件事:如果你开发应用程序需要当前Google Play服务的功能,则几乎所有设备已经具有当前版本,很难找到不是最新版本的设备。当你快速推出一个使用刚刚引入的新功能的应用程序更新时,你必须小心,否则可能会遇到更多问题。
但最终你必须记住,这一切取决于你发布应用的国家和你想要为其发布应用的生态系统。我希望我能回答你的问题,如果你有任何进一步的问题,请随时提问!

6
我使用Analytics和Admob来开发我的应用,它们都可以在没有安装Google Play服务的设备上运行。
Analytics: 链接 注意:SDK可用于并且可以在没有Google Play服务的设备上工作。在这种情况下,SDK将自动切换到本地分发。
Admob: 在SO上看到此问题。我还在Google Group的讨论中读到过关于此主题的一个开发人员在Admob团队中确认它可以工作,但现在我找不到链接了。
对于其他Google Play服务库,我没有使用过,因此无法确认它们是否适用。

在您的应用程序的Firebase控制台中是否可以查看(现已弃用的)Google Analytics SDK的事件?我知道这是两个不同的SDK,但我已经在使用Firebase进行Crashlytics,并且如果没有Google Play服务,则无法使用其分析功能。 - Cody

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