iOS Swift4没有在应用程序上请求权限

问题描述 投票:1回答:2

我需要在我的应用程序中访问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")
}
ios swift core-motion ios12 iphone-xr
2个回答
1
投票

我最初的问题是startRelativeAltitudeUpdates(to:withHandler)没有工作,并且被完全相同的问题所牵制:CMAltimeter.authorizationStatus()总是.notDetermined

然而事实证明,CMAltimeter实例已超出范围并且自动被ARC化,并且处理程序不再被调用。

简介:在IOS12中没有requestAuthorization()CMAltimeter,也不需要。


0
投票

欢迎!您需要做两件事来获得高度测量数据的许可。首先是您已经拥有的plist描述。第二种是调用CMAltimeter.authorizationStatus()。这将使用plist中的字符串向用户请求权限。

您可以在CMAltimeter CMAuthorizationStatus中获得四个结果中的一个:notDetermined,restricted,denied或authorized。如果你获得授权,那么你很高兴。如果您被拒绝,则该用户未获得他们的许可。受限制的是对此位置数据存在一些系统范围的限制(可能来自MDM)。

在Xcode文档中搜索CMAltimeter,authorizationStatus和CMAuthorizationStatus。

当您获得“授权”响应时,您可以使用处理程序调用startRelativeAltitudeUdpates,并且您的应用程序将在数据可用时获取更新。

© www.soinside.com 2019 - 2024. All rights reserved.