2

我需要在我的应用程序中访问 CMAAltmeter。所以我当然需要征求许可。我Privacy - Location When In Use Usage Description 当然在 info.plist 中添加了 andPrivacy - Motion Usage Description一个值,但应用程序从不请求权限,并且授权状态始终未确定

(设备 -> 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")
}
4

2 回答 2

1

我最初的问题是它startRelativeAltitudeUpdates(to:withHandler)不起作用,并且被完全相同的问题所困扰: CMAltimeter.authorizationStatus()总是.notDetermined.

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

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

于 2019-04-20T18:35:29.720 回答
-1

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

您可以获得如 CMAltmeter CMAuthorizationStatus 中的四个结果之一:notDetermined、restricted、denied 或 authorized。如果你得到授权,你就可以走了。如果您被拒绝,则用户没有给予他们的许可。限制是对此位置数据有一些系统范围的限制(可能来自 MDM)。

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

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

于 2019-03-08T23:11:17.957 回答