应用权限配置
晓葆 SDK 的部分功能需要设备权限。本文说明各权限的用途, 以及何时请求权限可获得最佳用户体验。
权限概述
SDK 仅在相关功能实际被触发时才请求权限,不会在初始化阶段批量申请。 你也可以选择在合适的时机提前申请,以减少功能使用时的等待。
Android 权限清单
| 权限 | 功能 | 类型 |
|---|---|---|
INTERNET | API 请求、数据上传下载 | 普通权限(自动授予) |
ACCESS_NETWORK_STATE | 检测网络状态,决定离线/在线策略 | 普通权限(自动授予) |
CAMERA | 到站二维码扫描核验 | 危险权限(需运行时申请) |
ACCESS_FINE_LOCATION | 附近健康站查询(精确位置) | 危险权限(需运行时申请) |
ACCESS_COARSE_LOCATION | 附近健康站查询(模糊位置,精确位置拒绝后降级) | 危险权限(需运行时申请) |
在 AndroidManifest.xml 中声明:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />iOS 权限清单
在 Info.plist 中添加权限说明字符串(App Store 审核要求):
| Key | 功能 |
|---|---|
NSCameraUsageDescription | 到站二维码扫描 |
NSLocationWhenInUseUsageDescription | 查找附近健康站 |
<!-- Info.plist -->
<key>NSCameraUsageDescription</key>
<string>扫描到站码完成到站核验</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>获取附近的晓葆健康站列表</string>请求时机建议
| 权限 | 建议请求时机 |
|---|---|
| 相机权限 | 用户点击「到站」/ 「出示到站码」按钮时 |
| 位置权限 | 用户进入「附近健康站」页面时,展示权限说明后请求 |
用户拒绝后的处理
SDK 在权限被拒绝时不会强制跳转设置页,而是展示友好的说明弹窗, 并提供「去设置」按钮引导用户手动开启。
你可以通过主题配置自定义此弹窗的文案,也可以完全接管权限申请逻辑:
// 完全接管权限申请,SDK 不再自动请求
XiaobaoSDK.init(
...,
permissionDelegate = object : XiaobaoPermissionDelegate {
override fun requestCamera(onResult: (Boolean) -> Unit) {
// 你的自定义请求逻辑
myRequestPermission(Manifest.permission.CAMERA) { granted ->
onResult(granted)
}
}
}
)