watchOS 10 CLLocationManager 获取用户位置权限时出现问题

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

几年前我就有了一个 iOS 应用程序和一个配套的 watchOS 应用程序。过去一切都工作得很好。 现在,iOS 17 和 watchOS 10 在询问用户使用其位置的权限时似乎存在问题。 我有我的

let locationManager = CLLocationManager()
,然后我会请求用户允许通过调用
locationManager.requestWhenInUseAuthorization()
来获取他的位置。现在的问题是什么也没有发生。没有弹出对话框询问用户是否可以获取他的位置。我要求的所有其他权限(例如 HealthKit)都已提供,只是没有提供该位置的权限。

我当然有正确的 Info.plist 条目

Privacy - Location When In Use Usage Description
。再说一遍......在 watchOS 10 之前,所有这些都运行得很好。

我做了一些挖掘,发现了两件有趣的事情。

  1. 如果我将我的应用程序变成仅限手表操作系统的应用程序,该对话框会再次弹出。但我当然不想要这样。我想保留我的伴侣应用程序。

  2. 在控制台应用程序中我发现了这条消息:

    standard    10:10:50.684329+0200    locationd   {"msg":"#AuthPrompt #Warning Delaying authorization request placed while insufficiently in-use", "ClientKeyPath":iat.<my-bundle-id>:, "requestType":0, "inUseLevel":0}
    

    所以它抱怨我的应用程序是

    insufficiently in-use
    ?!?

所以总结:调用

locationManager.requestWhenInUseAuthorization
不会打开询问用户权限的系统对话框。因此授权状态将始终保持为
notDetermined
。还有其他人遇到过这个问题吗?还有解决办法吗?

ios swift swiftui core-location watchos
1个回答
0
投票

是的,我的手表操作系统应用程序也面临同样的问题。每当我从设备中删除应用程序并从试飞中安装新应用程序时,我就不会在 watch os 10 中收到位置身份验证警报。(在 watch os 10 之前它工作正常)

现在我正在使用以下解决方法。 (此解决方法将重置所有应用程序位置和隐私)

确保iPhone和手表已通过蓝牙连接。 从后台删除手表应用程序。 转到“设置”应用程序 ->“常规”->“传输或重置 iPhone”->“重置”->“重置位置和隐私”。 再次打开手表应用程序,您将收到位置验证警报。

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