ios - 在 iOS 上升级应用程序时重置位置服务权限

标签 ios iphone upgrade core-location cllocationmanager

总结:

iOS/App Store 是否可以在应用升级时重置应用的位置服务权限?

详细:

在我们最近的应用升级中,我们相信,之前因启用某些功能而授予我们的应用“始终”定位服务权限的相当多的用户在首次启动时会收到“使用中定位服务”提示。我们的应用程序的新版本。由于此权限提示没有上下文,我们的许多用户此时可能选择了“不允许”。

据我所知,我们的应用无法通过代码重置用户的权限设置。有谁知道某个版本的 iOS 和/或设备组合会在应用升级时导致此行为?

我们的应用只有在授权状态设置为 kCLAuthorizationStatusNotDetermined 时才会提示用户提供定位服务权限。否则我们将开始请求位置更新。

这是我们应用程序的启动代码片段:

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];
}
...

谢谢!

最佳答案

您不能通过代码更改位置权限,但如果用户拒绝位置权限,那么您可以使用'设置''取消' 按钮显示询问位置权限的警报.

如果用户点击“设置”,您可以将用户重定向到应用程序的设置页面,以通过以下代码更新位置权限。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

谢谢。

关于ios - 在 iOS 上升级应用程序时重置位置服务权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676777/

相关文章:

ios - 将字符串转换为 NSDate 给出错误的日期

ios - 目标中缺少 SDK - iphoneos5.0

iphone - NSURLConnection 挂了

visual-studio - 将 visual studio 升级到 sp1

ios - 核心数据 NSPredicate 在多个属性列中搜索

ios - 为什么 iOS 17 WidgetKit 中的交互式按钮在应用程序运行时不调用 AppIntent Perform()?

ios - 程序化设备特定 iOS 约束为零

php - 将 PHP 从版本 5.2 升级到 5.3

reactjs - 如何将 React 从 0.13 升级到 15.0.1?

ios - XCode中Document下 'Notes'的用途是什么