所以最初的要求是,在應用程序的啓動時,移動應用程序將獲得用戶的當前位置精確到城市。基於城市,服務器/應用程序客戶端將提供城市相關內容。如何在不使用核心位置服務的情況下獲取用戶的當前城市名稱?
我知道,如果我可以使用核心位置服務(因爲您知道可疑(自我關心)用戶通常會禁用不太信任的應用程序的位置服務),這不會太困難。
我已經在網上搜索了幾個小時,並獲得了以下解決方案的摘要,在這些解決方案中,我需要您的幫助來決定哪一個可能是我的最佳選擇,或者您是否有其他更好的選項。
使用[NSlocale autoupdatingCurrentLocale]
缺點:
從蘋果公司的文件調用的返回值不填解釋道:「區域是從當前的設置形成用戶選擇的系統區域設置覆蓋了用戶在系統偏好設置中指定的任何自定義設置。「從中我不明白什麼是「用戶在系統偏好設置中指定的自定義設置」 reference link
b。該值可能會產生誤導,並且與用戶當前的實際城市/國家根本無關。
評論:我將不勝感激,如果任何人都可以解釋我的語言環境是如何根據用戶的設置更改。
獲取當前iPhone時區
NSTimeZone *localTime = [NSTimeZone systemTimeZone];
NSLog(@"Current local timezone is %@",[localTime name]);
缺點:
- 一個。與上面的項目b相同,因爲用戶總是可以指定而不是讓系統自動更新時區。
- b。精確度被壓縮,只有首都會上市。
評論:不是非常有前途的,但容易實現
使用基於我的閱讀IP基於位置檢測Web服務 ,過程中會涉及到的應用程序向服務器發送一個請求,其中所述服務器將記錄該請求的IP
(不要認爲應用程序本身可以正確地獲得它自己的IP
,因爲它可能在本地網絡中)基於通過某些第三方服務記錄的IP
(具有IP
分貝或一些其他可用的API ),它會返回cit y信息返回給客戶。
缺點:
- 一個。我從來沒有實現過這樣的事情,不知道它是否適用於移動應用程序。
- b。即使有可能,也不知道它是否比核心位置服務更快。
評論:如果您知道這是可能的iOS應用程序這樣做,請讓我知道。
如果您知道,請給我任何想法或建議任何更好的解決方案。
非常感謝。