当前位置: 首页 > news >正文

ios andriod 位置信息

ios andriod 位置信息

ios
提示:
(没有永久拒绝 ) deniedForever
允许一次 whileInUse ( 1下次启动:需要重新请求权限 。临时授权,应用退出后权限自动撤销)
使用App时允许 whileInUse (1.下次启动:权限保持有效,无需重新请求 2.永久前台权限,但后台时限制访问)
不允许 denied

系统主动升级

更改为仅在使用App时允许 whileInUse
继续允许 always (多出的)
不允许 denied

早期版本 可能是:

  • "仅在使用App时"
  • "始终允许"
  • "不允许"

ios
后台

有永不 denied 不是deniedForever 记住ios 没有

iOS vs Android 权限状态对比

iOS 实际支持的状态:

  • LocationPermission.denied
  • LocationPermission.whileInUse
  • LocationPermission.always
  • LocationPermission.unableToDetermine (仅Web)

iOS 没有 LocationPermission.deniedForever

Android 支持的状态:

  • LocationPermission.denied
  • LocationPermission.deniedForever ✓
  • LocationPermission.whileInUse
  • LocationPermission.always
  • LocationPermission.unableToDetermine

为什么 iOS 没有 deniedForever?

iOS 的设计哲学:

  • 用户随时可以改变主意
  • 即使在设置中选择"永不",也只是返回 denied
  • 应用仍可以尝试请求权限(只是不会弹窗)

Android 的设计:

  • 有明确的"永久拒绝"概念
  • 用户选择"拒绝且不再询问"后进入 deniedForever 状态
  • 应用无法再次请求权限

代码处理差异

final permission = await Geolocator.checkPermission();

if (permission == LocationPermission.denied) {
// iOS: 可能是"永不",也可能是普通拒绝
// Android: 普通拒绝,可以重新请求
} else if (permission == LocationPermission.deniedForever) {
// iOS: 永远不会进入这个分支
// Android: 永久拒绝,需要引导到设置页
}