繁体   English   中英

iOS Swift4 没有在应用程序上请求许可

[英]iOS Swift4 Didn't Ask for Permission on App

我需要在我的应用程序中访问 CMAltimeter。 所以我当然需要征求许可。 我在 info.plist 中添加了Privacy - Location When In Use Usage Description ,当然还有Privacy - Motion Usage Description with a Value in 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实例超出了范围并被自动 ARC'ed 并且不再调用处理程序。

总结: CMAltimeter中没有CMAltimeter requestAuthorization() ,也不需要。

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

您可以获得 CMAltimeter CMAuthorizationStatus 中的四种结果之一:notDetermined、restricted、 denied 或授权。 如果您获得授权,您就可以开始了。 如果您被拒绝,则用户未授予他们的许可。 受限是对这个位置数据有一些系统范围的限制(可能来自 MDM)。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM