我需要在我的应用程序中访问CMAltimeter。所以当然我需要请求许可。我添加Privacy - Location When In Use Usage Description
,当然Privacy - Motion Usage Description
与info.plist中的值,但应用程序从不要求权限和授权状态总是不确定
(设备 - > iPhone XR iOS12)和最新的Xcode。我在Xcode中的签名只是我的Apple ID的个人团队,因为我们只需要这个大学。 (直到今天我还没有购买开发者许可证)App和CoreMotion运行。 (CMDeviceMotion不需要权限)
func myDeviceMotionQFE(){
if CMAltimeter.isRelativeAltitudeAvailable() {
switch CMAltimeter.authorizationStatus() {
case .notDetermined:
print("Altimeter -> NotDetermined")
break
case .denied:
print("Altimeter -> Denied")
break
case .restricted:
print("Altimeter -> Restricted")
break
case .authorized:
print("Altimeter -> Authorized")
}
我最初的问题是startRelativeAltitudeUpdates(to:withHandler)
没有工作,并且被完全相同的问题所牵制:CMAltimeter.authorizationStatus()
总是.notDetermined
。
然而事实证明,CMAltimeter
实例已超出范围并且自动被ARC化,并且处理程序不再被调用。
简介:在IOS12中没有requestAuthorization()
的CMAltimeter
,也不需要。
欢迎!您需要做两件事来获得高度测量数据的许可。首先是您已经拥有的plist描述。第二种是调用CMAltimeter.authorizationStatus()。这将使用plist中的字符串向用户请求权限。
您可以在CMAltimeter CMAuthorizationStatus中获得四个结果中的一个:notDetermined,restricted,denied或authorized。如果你获得授权,那么你很高兴。如果您被拒绝,则该用户未获得他们的许可。受限制的是对此位置数据存在一些系统范围的限制(可能来自MDM)。
在Xcode文档中搜索CMAltimeter,authorizationStatus和CMAuthorizationStatus。
当您获得“授权”响应时,您可以使用处理程序调用startRelativeAltitudeUdpates,并且您的应用程序将在数据可用时获取更新。