用途:面向 iOS 17+ 的 Core Location 现代 API 参考,用于查询 CLLocationUpdate、CLMonitor、CLServiceSession 的签名与用法,实现地理围栏、区域监控、后台定位与授权配置,并排查定位问题。
主要能力:CLLocationUpdate 以 AsyncSequence 提供定位更新,支持 .default、.automotiveNavigation、.fitness 等配置,含 isStationary、authorizationDenied、accuracyLimited 等属性,静止时自动暂停、移动时恢复。CLMonitor 为 Swift actor,支持 CircularGeographicCondition 与 BeaconIdentityCondition(UUID/major/minor 三级),通过 events 异步接收进入/离开事件,最多 20 个条件。CLServiceSession(iOS 18+)声明式授权,支持 .whenInUse、.always 与 fullAccuracyPurposeKey,并提供 diagnostics 诊断流。另含授权状态机、后台定位(CLBackgroundActivitySession)、旧版 CLLocationManager、地理编码与测试模拟。
使用方式:用 for try await update in CLLocationUpdate.liveUpdates() 迭代更新;用 await CLMonitor("MyMonitor") 创建监控并 add 条件;用 CLServiceSession(authorization: .whenInUse) 持有会话。需在 Info.plist 配置 NSLocationWhenInUseUsageDescription 等键,后台定位需开启 Background Modes 的 Location updates。
限制:CLMonitor 每个名称仅一个实例,条件上限 20 个,圆形区域最小有效半径约 100 米;退出事件可能延迟 3-5 分钟;.always 授权须在前台发起;会话需在 didFinishLaunchingWithOptions 中重建。具体收费与平台支持范围暂未提供。