iOS Swift4并未要求获得应用许可

时间:2019-03-08 13:52:59

标签: ios swift core-motion ios12 iphone-xr

我需要访问我的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")
}

2 个答案:

答案 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,并且当数据可用时,您的应用将获取更新。