我需要访问我的App中的CMAltimeter。
因此,我当然需要寻求许可。
而且我在info.plist中添加了Privacy - Location When In Use Usage Description
,当然还有Privacy - Motion Usage Description
,但其中的值是肯定的,但应用程序从未征求许可,并且始终不会确定授权状态
(设备-> 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")
}
答案 0 :(得分:1)
我最初的问题是startRelativeAltitudeUpdates(to:withHandler)
无法正常工作,并且被完全相同的问题所困扰:
CMAltimeter.authorizationStatus()
始终是.notDetermined
。
但是事实证明,该CMAltimeter
实例超出了范围,并自动进行了ARC处理,并且不再调用该处理程序。
摘要:IOS12中没有requestAuthorization()
的{{1}},都不需要。
答案 1 :(得分:0)
欢迎光临!您需要做两件事来获得对测高数据的许可。首先是您已经拥有的plist描述。第二种是调用CMAltimeter.authorizationStatus()。这将使用您在plist中具有的字符串向用户寻求许可。
您可以从CMAltimeter CMAuthorizationStatus中获得以下四个结果之一:未确定,受限,拒绝或授权。如果获得授权,那就很好了。如果您被拒绝,则该用户未获得其许可。限制是此位置数据在系统范围内受到限制(可能来自MDM)。
在Xcode文档中搜索CMAltimeter,authorizationStatus和CMAuthorizationStatus。
当您获得“授权”响应时,可以使用处理程序调用startRelativeAltitudeUdpates,并且当数据可用时,您的应用将获取更新。