簡體   English   中英

iOS位置服務要求打開應用程序

[英]iOS Location Services asks on app open

只是嘗試向我的應用添加位置服務(在ObjC中)。 我只想在我即將使用它時顯示權限提示,但是當我第一次打開應用程序時會出現提示。

我的印象是只有在CLLocationManager對象上調用startUpdatingLocation時才會出現提示。 然而,這只在我的應用程序中調用某些ViewControllers(絕對不是我的第一個視圖控制器)。

有趣的是這個問題只出現在iOS8中,在iOS7中很好用。 有人有類似的問題嗎? 或者知道還有什么可能是錯的?

謝謝。

iOS 8改變了位置服務的處理方式,這也意味着如果您支持較舊版本的操作系統,則可能需要進行一些額外的編碼。 想要詳細了解整個過程,請查看NSHipster

在iOS 8之前,是調用startUpdatingLocation會提示用戶獲得權限。 雖然現在請求權限和啟動位置更新是分開的,但您需要調用requestWhenInUseAuthorizationrequestAlwaysAuthorization

不僅如此,在iOS8中,您需要顯式添加兩個plist鍵,然后定義它們的值: NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription ,這些字符串將顯示在警報中,通知用戶您的應用正在請求位置信息。

但嚴重的是,請查看鏈接。 解釋這一切都是驚人的,遠比我在這里總結的要好得多。

在不知道您放置代碼的位置的情況下,我處理此問題的方式是

  • 創建一個請求位置訪問的方法,即 - (void)findLocationAsk
  • 現在不要在應用程序啟動時調用此方法,因為您不希望這種行為
  • 在視圖控制器中調用此方法
  • 您可以在viewDidLoad或按鈕操作中調用它,也可以將其作為計時器激活。

這應該會在應用程序啟動時處理您的提示

更新:您的應用程序將在iOS 8啟動時提示您進行位置訪問。這是因為在plist文件中檢測到了“必需的后台模式”所需的密鑰。 您唯一能做的就是使該消息更具描述性,以便您需要訪問權限。 將此鍵和描述對添加到plist文件中,並在其中添加您喜歡的任何解釋文本

NSLocationWhenInUseUsageDescription請授予此應用程序訪問您的位置的權限,如果檢測到失敗的登錄嘗試,您想知道它是誰

暫無
暫無

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

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