我需要在我的应用中访问cmaltimeter。因此,我当然需要要求许可。我添加了Privacy - Location When In Use Usage Description
,当然还有Privacy - Motion Usage Description
具有info.plist中的值。
(设备 -> iPhone XR IOS12)和最新的Xcode。我在Xcode中签名只是带有我的Apple ID的个人团队,因为我们只需要大学。(直到今天我还没有购买开发人员许可证)应用程序和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
实例从范围中脱出并自动弧形,处理程序不再被调用。
摘要:ios12中的CMAltimeter
没有requestAuthorization()
,都不需要。
欢迎!您需要做两件事才能获得高度计数据的许可。首先是您已经拥有的PLIST描述。第二个是调用cmaltimeter.authorizationstatus()。这将询问用户使用您在PLIST中的字符串的权限。
您可以像cmaltimeter cmauthorizationStatus中获得四个结果之一:未确定,限制,拒绝或授权。如果您获得授权,那么您就可以了。如果您被拒绝,用户尚未授予他们的许可。受到限制是对此位置数据有一定的全系统限制(也许来自MDM)。
在XCode文档中搜索CMALTIMETER,授权Status和CmauthorizationStatus。
当您获得"授权"响应时,您可以使用处理程序致电StarTrelativeAltuduDpates,并且您的应用将在可用数据时获取更新。