2013-07-11 30 views
11

我不需要精確的位置數據,我不希望用戶看到「此應用想要確定您的位置」警報。我只需要確定用戶的國家,假設他們通過網絡或Wi-Fi連接了互聯網。iOS - 在不使用CLLocationManager的情況下確定用戶的國家

這樣做的最好方法是什麼?有什麼方法可以使用他們的IP?

CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; 
CTCarrier *carrier = [netInfo subscriberCellularProvider]; 
NSString *mcc = [carrier mobileCountryCode]; 

而且NSLocale不在用戶可以在自己的設備設置更改可靠:

此,如果他們有一個載體只會工作。出於同樣的原因,不能使用設備的語言設置。我需要基於他們身在何處的國家。

+0

作品因爲用戶可能會在飛行模式下或沒有連接到網絡,或者用戶可以使用一個代理,不能保證你能從網絡獲得準確的信息。 – rmaddy

回答

1

您可以獲取用戶的IP地址並使用地理位置數據庫根據此處的說明猜測其位置:https://en.wikipedia.org/wiki/IP_address_location。如果您只關注地區,您可能會在地區互聯網註冊管理機構(https://en.wikipedia.org/wiki/Regional_Internet_registry)網站上找到一些數據來幫助您,因爲它們控制特定地區的所有IP地址。

+0

你將如何解決這個問題 - 如果我在我的家庭Wi-Fi上,我的IP是192.168.x.x,並且如果我在我的手機網絡上,我的IP是10.174.x.x? – soleil

+0

你是對的,你只會爲你的IP地址得到垃圾 - 這隻有當你是一個網站或什麼的時候纔會起作用。我會嘗試一些答案在這裏得到路由器本身的地址:http://stackoverflow.com/questions/2113580/objective-c-how-to-fetch-the-router-address?lq=1。 –

+0

您的本地IP地址(例如:192.168.x.x)與您的外部IP地址不同。因此,如果您要使用IP地址來獲取用戶的位置,則需要獲取其外部IP地址。 –

相關問題