簡體   English   中英

在iOS上升級應用后重置位置服務權限

[英]Location Services Permission reset upon app upgrade on iOS

摘要:

iOS / App Store是否可以在應用升級時重置應用的位置服務權限?

詳細:

在我們最近進行的應用升級中,我們相信,由於啟用了某些功能,先前已向我們的應用授予“始終”位置服務權限的許多用戶在首次啟動新版本的“使用中”時出現了位置服務提示我們的應用程序。 由於此權限提示周圍沒有上下文,因此我們很多用戶目前可能選擇了“不允許”。

AFAIK,我們的應用程序無法通過代碼重置用戶的權限設置。 是否有人知道某個特定版本的iOS和/或設備組合會在應用程序升級時導致此行為?

我們的應用程序唯一會提示用戶輸入位置服務權限的時間是,如果authorizationStatus設置為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]];

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM