当您创建 Wear OS by Google 中国版的应用时,您需要考虑手持设备没有预装Google Play services的情形。为了方便全球开发者对中国市场进行应用适配,本页列出通用的特殊注意事项。
使用正确的 Google Play services 版本
Google Play services 10.2.0 版本提供全球范围内的Fused Location Provider API 和 Data Layer API支持。开发者如若使用这两个API,则必须使用这个版本。否则就不需要引入任何GMS的依赖。
Fused Location Provider API
如果您要使用 Fused Location Provider API, 则需要在您项目 wear module 的 build.gradle
文件
中添加如下依赖
dependencies {
...
compile 'com.google.android.gms:play-services-location:10.2.0'
}
Data Layer API
注意: 从 Wear OS 2.0 开始,我们并不鼓励开发者使用 Data Layer API。这是因为手表应用现在可以直接访问互联网,大大简化了应用开发。而且,与 iOS 配对手表设备不支持 Data Layer API。
如果您的应用使用 Data Layer API, 您需要在项目 wear module 中的 build.gradle
文件添加下行。该
行需要使用 10.2.0 的 client library:
dependencies {
...
compile 'com.google.android.gms:play-services-wearable:10.2.0'
...
}
与此同时,您也需要到您手机应用的项目 mobile module 中的 build.gradle
文件添加下行。将 Google Play services 以来提升到 10.2.0 版本
dependencies {
...
compile 'com.google.android.gms:play-services-wearable:10.2.0'
}
用户认证
在开始实现用户认证之前,请思考您的用例是否真的需要认证。比如,对于一个天气预报的应用来说,很有可能根本不需要用户进行登录和认证。
如果您真的需要用户认证,我们推荐使用OAuth 2.0或者,作为一个备选方案,让用户直接在手表上输入认证信息。其次,您也可以通过Data Layer传递认证信息。然而我们不推荐使用 Data Layer,因为在与 iOS 配对的手表上,该 API 无法使用。
消息同步
在中国,我们暂无远程通知同步支持。手机上的通知只有在与手表通过蓝牙连接的时候才会同步到 Wear OS by Google 设备上。
定位与地图坐标兼容性
如果您需要使用定位,我们鼓励开发者使用FusedLocationProvider。这是因为FusedLocationProvider能够自动帮助您处理不同的应用环境,例如手表是否有硬件定位支持,手表是否与 Android 或 iOS 设备配对等等。另外,它也从系统级对定位进行了功耗优化
当您与中国第三方地图SDK集成 FusedLocationProvider
时,请务必考虑到中国的地图提供商会很可能使用不
同的位置坐标系。FusedLocationProvider
保证您只会得到 WGS84 标准的坐标。请务必检查您是否需要根据地图SDK的需求,对获取的坐标进行转换。
Google Fit 支持
Google Fit的 累积记步器 在中国市场提供最多七天的历史记录支持。您如若需要使用该API,请确保在创建API client时不要设置任何用户帐号。
模拟器支持
您可以通过模拟器使用 Wear OS by Google 中国版模拟器,以此来测试您的应用。中国版模拟器在 Android Studio 3.0 上开始 提供。
请按照以下步骤安装 Wear OS by Google 中国版模拟器:
- 确保您安装了 Android Emulator 26.1.2 版本。
- 从SDK Manager上下载 Wear OS by Google 中国版模拟器。
- 当创建 AVD Profile 时,选择 Wear OS by Google for China 镜像。
- 选择创建的 AVD Profile 并启动模拟器
从应用内发起蓝牙和Wi-Fi请求
Wear OS 2.0会自动分发网络请求。在绝大多数的情况下,应用并不需要自己打开蓝牙或者Wi-Fi。
在中国版上,如果一个应用自己通过 API 打开了蓝牙或者Wi-Fi,这个请求会直接失败。与此同时,系统会弹出一个对话框来要求用户进行确认。只有当用户确认时,相应的网络接口才会被打开。这个特点会在每次 (并非第一次应用请求) 请求
BluetoothAdapter.enable()
或 WifiManager.setEnabled(true)
时发生。
权限审查模式
在中国,Wear OS by Google 中国版手表运行在 权限审查模式
中。在该模式下,对于 targetApiLevel
低于23的应用,系统对其有特殊的限制:
- 尽管权限是安装时授权,当
targetApiLevel
小于23的应用第一次被打开时,会有一个对话框弹出,让用户确 认该应用所需要的权限。 - 该应用所有的components,包括 broadcast receivers,services,activities 等等,均不会在用户确认权限之前 相应任何系统事件。
所以,我们强烈的推荐您使用 targetApiLevel
23 以上,并使用
运行时权限最佳实践指南的建议。
使用其他 Google Play services APIs
如果您的应用使用了除了 Wearable API 以外的 Google Play services APIs,您则需要在使用之前检查该 API 是否可用。开发者可以使用以下两种方法检查 Google Play service API 是否可用:
- 在与其他 API 连接时,使用一个单独的 GoogleApiClient 实例。该接口包含了一个回调来通知您的应用连接是否 成功 或 失败。如若连接失败, ConnectionResult 列出失败原因为 API_UNAVAILABLE。想要了解如何处理连接失败,请浏览 使用 Google APIs。
- 使用 GoogleApiClient.Builder 中的 addApiIfAvailable() 方法来连接所需的API。当 onConnected() 回调响应时,使用 hasConnectedApi() 方法来确保每个请求过的 API 已经正确连接。