[英]iOS Location Services asks on app open
只是嘗試向我的應用添加位置服務(在ObjC中)。 我只想在我即將使用它時顯示權限提示,但是當我第一次打開應用程序時會出現提示。
我的印象是只有在CLLocationManager
對象上調用startUpdatingLocation
時才會出現提示。 然而,這只在我的應用程序中調用某些ViewControllers(絕對不是我的第一個視圖控制器)。
有趣的是這個問題只出現在iOS8中,在iOS7中很好用。 有人有類似的問題嗎? 或者知道還有什么可能是錯的?
謝謝。
iOS 8改變了位置服務的處理方式,這也意味着如果您支持較舊版本的操作系統,則可能需要進行一些額外的編碼。 想要詳細了解整個過程,請查看NSHipster
在iOS 8之前,是調用startUpdatingLocation
會提示用戶獲得權限。 雖然現在請求權限和啟動位置更新是分開的,但您需要調用requestWhenInUseAuthorization
或requestAlwaysAuthorization
。
不僅如此,在iOS8中,您需要顯式添加兩個plist鍵,然后定義它們的值: NSLocationWhenInUseUsageDescription
和NSLocationAlwaysUsageDescription
,這些字符串將顯示在警報中,通知用戶您的應用正在請求位置信息。
但嚴重的是,請查看鏈接。 解釋這一切都是驚人的,遠比我在這里總結的要好得多。
在不知道您放置代碼的位置的情況下,我處理此問題的方式是
這應該會在應用程序啟動時處理您的提示
更新:您的應用程序將在iOS 8啟動時提示您進行位置訪問。這是因為在plist文件中檢測到了“必需的后台模式”所需的密鑰。 您唯一能做的就是使該消息更具描述性,以便您需要訪問權限。 將此鍵和描述對添加到plist文件中,並在其中添加您喜歡的任何解釋文本
NSLocationWhenInUseUsageDescription請授予此應用程序訪問您的位置的權限,如果檢測到失敗的登錄嘗試,您想知道它是誰
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.