【发布时间】:2019-12-31 18:12:51
【问题描述】:
总结:
iOS/App Store 是否可以在应用升级时重置应用的定位服务权限?
详细说明:
在我们最近的应用升级中,我们相信有不少用户在首次启动时收到了“使用中的定位服务”提示,这些用户之前因启用某些功能而授予我们的应用“始终”定位服务权限我们的应用程序的新版本。由于此权限提示周围没有上下文,因此我们的许多用户可能此时选择了不允许。
AFAIK,我们的应用无法通过代码重置用户的权限设置。是否有人知道某个版本的 iOS 和/或设备组合会在应用升级时导致这种行为?
我们的应用会提示用户提供位置服务权限的唯一情况是,如果将 authorizationStatus 设置为 kCLAuthorizationStatusNotDetermined。否则我们将开始请求位置更新。
这是我们应用启动代码的 sn-p:
CLLocationManager *lmFollowMe = [[CLLocationManager alloc] init];
[lmFollowMe setDesiredAccuracy:kCLLocationAccuracyKilometer];
[lmFollowMe setDistanceFilter:1000];
[lmFollowMe setDelegate:self];
if ([lmFollowMe respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
[lmFollowMe setAllowsBackgroundLocationUpdates:NO];
}
[self setFollowMeLocationManager:lmFollowMe];
...
if ([CLLocationManager locationServicesEnabled] == YES) {
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
if (status == kCLAuthorizationStatusDenied) {
...
} else if (status == kCLAuthorizationStatusRestricted) {
...
} else if (status == kCLAuthorizationStatusNotDetermined) {
if ([self followMeStarted] == NO) {
[self setFollowMeStarted:YES];
[[self followMeLocationManager] requestWhenInUseAuthorization];
}
} else {
[[self followMeLocationManager] startUpdatingLocation];
}
...
谢谢!
【问题讨论】:
-
用户使用的是 iOS 13 测试版吗?这可能解释了这种行为developer.apple.com/videos/play/wwdc2019/705
标签: ios iphone upgrade core-location cllocationmanager