【问题标题】:Location Services Permission reset upon app upgrade on iOS在 iOS 上升级应用程序时重置位置服务权限
【发布时间】: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 iphone upgrade core-location cllocationmanager


【解决方案1】:

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

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

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

谢谢。

【讨论】:

  • 感谢您提供此反馈。是的,我知道如何提示用户使用 iOS 设置来更改他们的定位服务权限,但我更想了解为什么应用程序的权限在应用程序升级后立即丢失/重置。
猜你喜欢
  • 2013-02-15
  • 2016-09-17
  • 1970-01-01
  • 2015-02-10
  • 2019-06-25
  • 1970-01-01
  • 2021-01-25
  • 2020-08-19
  • 2017-09-20
相关资源
最近更新 更多