2013-07-11 23 views
11

Tôi không cần dữ liệu vị trí chính xác và tôi không muốn người dùng thấy thông báo "Ứng dụng này muốn xác định vị trí của bạn". Tôi chỉ cần xác định quốc gia của người dùng, giả sử họ có kết nối internet qua mạng hoặc wi-fi.iOS - Xác định quốc gia của người dùng mà không sử dụng CLLocationManager

Cách tốt nhất để làm điều này là gì? Có cách nào để sử dụng IP của họ không?

Điều này sẽ chỉ làm việc nếu họ có một tàu sân bay:

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

NSLocale là không đáng tin cậy trong đó người dùng có thể thay đổi nó trong cài đặt thiết bị của họ. Không thể sử dụng cài đặt ngôn ngữ của thiết bị vì lý do tương tự. Tôi cần đất nước dựa trên nơi họ sống trên thực tế.

+0

Kể từ khi một người sử dụng có thể là trong chế độ máy bay hay không kết nối với mạng, hoặc người dùng có thể được sử dụng một proxy, không có đảm bảo bạn có thể nhận được thông tin chính xác từ mạng. – rmaddy

Trả lời

1

Bạn có thể nhận địa chỉ IP của người dùng và sử dụng cơ sở dữ liệu vị trí địa lý để đoán vị trí của họ dựa trên điều đó như được mô tả tại đây: https://en.wikipedia.org/wiki/IP_address_location. Nếu bạn chỉ quan tâm đến khu vực, bạn có thể tìm thấy một số dữ liệu tại các trang web đăng ký internet khu vực (https://en.wikipedia.org/wiki/Regional_Internet_registry) để giúp bạn, vì chúng kiểm soát tất cả các địa chỉ IP cho một khu vực cụ thể.

+0

Làm thế nào bạn sẽ nhận được xung quanh vấn đề này - Nếu tôi đang ở nhà của tôi wi-fi IP của tôi là 192.168.x.x, và nếu tôi đang ở trên mạng di động của tôi IP của tôi là 10.174.x.x? – soleil

+0

Bạn nói đúng, bạn sẽ chỉ nhận được rác cho địa chỉ ip của bạn - điều này sẽ chỉ hoạt động nếu bạn là một trang web hoặc một cái gì đó. Tôi sẽ thử một số câu trả lời ở đây để lấy địa chỉ của chính router: http://stackoverflow.com/questions/2113580/objective-c-how-to-fetch-the-router-address?lq=1. –

+0

Địa chỉ IP cục bộ của bạn (ví dụ: 192.168.x.x) khác với địa chỉ IP bên ngoài của bạn. Vì vậy, nếu bạn định sử dụng địa chỉ IP để có được vị trí của người dùng, bạn cần lấy địa chỉ IP bên ngoài của mình. –

Các vấn đề liên quan