没有 Google Play 服务的设备的后备计划是什么

2024-05-11

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

  • 谷歌广告移动
  • 谷歌分析
  • 谷歌云端硬盘

然而,在迁移指南中,Google 没有提到对于没有 Google Play 服务或没有最新的 Google Play 服务的设备我们应该做什么。

那么,我们是否应该忽略没有 Google Play 服务的用户,或者有一个后备计划?

必须为后备计划维护单独的 jar 文件集和遗留代码是相当麻烦的。此外,jar 文件和 GPS 并排放置时可能会出现冲突问题。同时利用 Play 服务和 AdMob SDK https://stackoverflow.com/questions/19721158/utilize-both-play-services-and-admob-sdk?lq=1


1. 检查 Google Play 服务

据记录here http://developer.android.com/google/play-services/setup.html#ensure您应该始终确保:

  1. Google Play Services 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;          
    }
}

您可以使用类似的方法showErrorDialogFragment(...) of the GooglePlayServiceUtils显示适当的错误消息:

int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity());
if(GooglePlayServiceUtil.showErrorDialogFragment(errorCode, getActivity(), REQUEST_CODE)) {
    // Dialog was shown
} else {
    // Dialog was not shown.
}

仅当错误代码不是以下内容时才会显示该对话框ConnectionResult.SUCCESS.

您可以找到相关文档GooglePlayServiceUtil class here http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html.

2. Fallback

您是否需要后备仅取决于您的应用程序和您的目标市场。例如,如果您将其发布到 Google Play 商店(我假设您在使用 Google Play 服务后就这样做了),那么您实际上并不需要后备。因为人们要下载您的应用程序,他们首先需要 Google Play 商店,如果他们拥有 Google Play 商店,那么他们就可以访问 Google Play 服务。如果您想在亚马逊设备或诺基亚商店中发布它,那当然是一个完全不同的故事,因为拥有这些设备的设备没有 Google Play 商店或 Google Play 服务。同样在像中国这样的市场,几乎没有任何 Android 设备具有 Google Play 商店或任何 Google 服务,因此本质上您必须决定您的应用程序是否有必要,但正如我所说,如果您将其发布到 Google Play 商店,我不会不用担心。我上面提到的检查和错误对话框应该足以确保您的应用程序正常运行。新版本的 Google Play Services APK 的推出通常非常快。这可能需要几天的时间,但之后大多数设备都会收到更新。您还必须考虑一件事:如果您开发的应用程序需要当前 Google Play 服务的功能,那么您很可能不会遇到任何问题,因为几乎所有设备都已经具有当前版本,因此将相当困难找到不是最新的设备。当您快速推出使用几天前推出的某些新功能的应用程序更新时,您必须小心。在这种情况下,您可能会遇到更多问题。

但最终您必须记住,这一切都取决于您发布应用程序的国家/地区以及您想要发布应用程序的生态系统。

我希望我能回答您的问题,如果您还有其他问题,请随时提问!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有 Google Play 服务的设备的后备计划是什么 的相关文章

随机推荐

  • 如何在画布中旋转图表同时保持数字垂直?

    我正在尝试围绕其中心旋转画布中的图表 同时保持字母直立 我正在尝试使用 ctx rotate 但它使用画布的左侧作为中心来旋转整个图表 以下链接提供了视觉效果 我希望它看起来像绿色 而不是红色 就像我的代码当前所做的那样 视觉解释 http
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 如何在 HashSet 或 HashMap 中使用自定义哈希函数?

    由于 SipHasher 对于我的用例来说太慢 因此我尝试实现自定义哈希函数 我发现一个例子 https github com rust lang rust blob master src librustc util nodemap rs我
  • 意外的 const 引用行为

    include
  • 如何在 Firefox 和 IE 中获得 user-modify:read-write-plaintext-only 行为

    Chrome Safari 支持 CSS webkit user modify read write plaintext only 它可以禁止用户将富文本粘贴到 contenteditable div 中 我不知道如何在 Firefox 和
  • 使用基于Optional内容的流

    我从不受我控制的服务获取可能为空的地图 并且想要处理它 比方说 过滤 映射并减少到我需要的单个元素 问题 是否有从Optional到Stream的 链接 我尝试过 除其他外 return Optional ofNullable getMap
  • Angular PWA 离线存储

    我正在构建一个新的 Web 应用程序 即使没有互联网连接 它也需要无缝工作 我选择了 Angular 并正在构建一个 PWA 因为它具有使应用程序离线工作的内置功能 到目前为止 我已经让服务工作人员完美工作并由清单文件驱动 这很好地缓存了静
  • JBAS014544:找不到带接口的 EJB

    我是 Java EE 新手 正在使用 JBoss 7 创建我的第一个项目 我的工作区中有一个 EAR 项目 一个 EJB 项目 WEB 项目和一个 JPA 项目 EJB 项目中创建的 ejb 想要使用 JPA 项目中创建的 ejb 一切都编
  • *Python 内的 Kaggle API 文档?

    我想写一个python从 Kaggle com 下载公共数据集的脚本 Kaggle API 是用 python 编写的 但是我能找到的几乎所有文档和资源都是关于如何在命令行中使用该 API 的 而关于如何使用kaggle图书馆内python
  • Ruby 单引号和双引号

    我最近一直在使用 Ruby 进行编码 并且之前使用过 Python 据我所知 单引号和双引号对代码的工作方式没有影响 我转向 Ruby 是为了了解它是如何工作的 并研究 Ruby 和 Python 之间的相似之处 我曾经使用过单引号字符串并
  • 膨胀类 android.support.design.internal.BottomNavigationView 时出错

    我正在制作我的第一个应用程序 这是一个简单的应用程序 带有启动屏幕和主要活动 现在我有两个构建变体 免费版本 活动底部有 Admob 横幅 付费版本 该应用程序不会在底部显示 admob 横幅 而是将其替换为用于切换活动的底部导航视图 我将
  • Spark (Python) 中的 Kolmogorov Smirnov 测试不起作用?

    我正在 Python Spark ml 中进行正态性测试 看到了我的结果think是一个错误 这是设置 我有一个标准化的数据集 范围 1 到 1 当我做直方图时 我可以清楚地看到数据不正常 gt gt gt prices norm hist
  • Meteor 中的触摸事件

    我开始使用 Meteor 做的第一件事是开始为手机 平板电脑编写基于触摸的 Web 应用程序 以下是重现问题的方法 第一步 创建一个空白项目 meteor create touch example cd touch example mete
  • 在特定线程上运行工作

    我想要一个特定的线程 任务队列并在该单独的线程中处理任务 应用程序将根据用户的使用情况创建任务并将其排队到任务队列中 然后单独的线程处理任务 即使队列为空 保持线程活动并使用它来处理排队任务也至关重要 我尝试过几种实现TaskSchedul
  • Swift 3 中的 NSFetchedResultsController 删除缓存

    目前正在迁移到 swift 3 无法完全弄清楚解析器想要什么NSFetchedResultsController deleteCache withName rootCache 使用这种语法 我得到一个 Type String 构建时出现不符
  • ASP.NET Core ViewData、BindProperty 还是 TempData?

    在 ASP NET Core 视图和 Razor 页面中 我们可以使用 public class LoginModel BindProperty public bool DisplayCaptcha get set OR ViewData
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 没有 Google Play 服务的设备的后备计划是什么

    目前 我正在将以前使用 jar 库的 Google 服务迁移到 Google Play 服务 谷歌广告移动 谷歌分析 谷歌云端硬盘 然而 在迁移指南中 Google 没有提到对于没有 Google Play 服务或没有最新的 Google