[英]Should javascript geolocation prompt user to turn on location services?
[英]How to prompt user to turn on Location Services…again
我想擁有與地圖應用程序相同的功能,每當用戶按下“當前位置”按鈕打開位置服務時,系統會提示用戶:
在地圖應用中,用戶每次都會收到“打開位置服務...”消息。 我怎樣才能讓我的應用程序也這樣做? 我讓用戶我正在使用一個新的CLLocationManager實例,以防這是問題,但事實並非如此。 我看不到會影響這個的任何設置。
如果我自己發出警報,我就無法獲得相同的“設置”按鈕功能。 此外,我不希望用戶看到多個看起來相同的警報。
有任何想法嗎?
在iOS 8中有一個名為UIApplicationOpenSettingsURLString
的常量。
來自UIKit下的“iOS中的新功能”文檔是:
您可以在“設置”應用中將用戶直接帶到與應用相關的設置。 將
UIApplicationOpenSettingsURLString
常量傳遞給UIApplication類的openURL:方法。
來自Apple的文檔 :
UIApplicationOpenSettingsURLString
用於創建可以傳遞給openURL:方法的URL。 當您打開從此字符串構建的URL時,系統會啟動“設置”應用並顯示應用的自定義設置(如果有)。
您可以將其傳遞給UIApplication openURL:方法。 它可能看起來像:
NSURL *settings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:settings])
[[UIApplication sharedApplication] openURL:settings];
如果要將用戶指回“設置”應用中的“位置服務”屏幕,可以將其發送到特殊URL,如下所示:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]];
如果啟用了位置服務,則可以查詢共享CLLocationManager
實例。 正確的方法是尊重用戶選擇以禁用位置服務。
但是,如果您願意,只需啟動位置服務,系統將提示用戶再次啟動它。 如果用戶選擇加入請求,將開始像往常一樣在您的代表上報告位置。 如果用戶拒絕您的請求,您將收到一個故障回調到locationManager:didFailWithError:
委托方法。 該錯誤的錯誤代碼為kCLErrorDenied
。
我強烈建議您不要這樣做,但如果用戶拒絕,您可以嘗試再次啟動該服務,並再次詢問用戶。 大多數用戶會討厭你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.