2013-07-11 6 views
11

का उपयोग किये बिना उपयोगकर्ता के देश का निर्धारण करें मुझे सटीक स्थान डेटा की आवश्यकता नहीं है, और मैं नहीं चाहता कि उपयोगकर्ता "यह ऐप आपका स्थान निर्धारित करना चाहता है" अलर्ट। मुझे बस उपयोगकर्ता के देश को निर्धारित करने की आवश्यकता है, मान लीजिए कि उनके पास नेटवर्क या वाई-फाई के माध्यम से इंटरनेट कनेक्शन है।आईओएस - CLLocationManager

ऐसा करने का सबसे अच्छा तरीका क्या है? क्या उनके आईपी का उपयोग करने का कोई तरीका है?

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

और NSLocale कि उपयोगकर्ता ने अपने डिवाइस सेटिंग्स में इसे बदल सकते हैं में विश्वसनीय नहीं है:

यह केवल अगर वे एक वाहक था काम करेगा। उसी कारण से डिवाइस की भाषा सेटिंग का उपयोग नहीं कर सकता। मुझे देश की आवश्यकता है जहां वे शारीरिक रूप से स्थित हैं।

+0

काम करता है दे दिया है के बाद से एक उपयोगकर्ता हवाई जहाज मोड में हो सकता है या नहीं किसी नेटवर्क से कनेक्ट, या उपयोगकर्ता का उपयोग कर किया जा सकता है एक प्रॉक्सी, कोई गारंटी नहीं है कि आप नेटवर्क से सटीक जानकारी प्राप्त कर सकते हैं। – rmaddy

उत्तर

1

आप उपयोगकर्ता का आईपी पता प्राप्त कर सकते हैं और यहां वर्णित अनुसार उनके स्थान का अनुमान लगाने के लिए एक भौगोलिक स्थान डेटाबेस का उपयोग कर सकते हैं: https://en.wikipedia.org/wiki/IP_address_location। यदि आप केवल क्षेत्र से चिंतित हैं, तो संभवतः आप क्षेत्रीय इंटरनेट रजिस्ट्रीज़ (https://en.wikipedia.org/wiki/Regional_Internet_registry) वेबसाइटों पर कुछ डेटा ढूंढ सकते हैं ताकि वे आपकी मदद कर सकें, क्योंकि वे किसी विशेष क्षेत्र के सभी आईपी पते को नियंत्रित करते हैं।

+0

आप इस मुद्दे के आसपास कैसे पहुंचेंगे - अगर मैं अपने घर पर हूं, तो मेरा आईपी 1 9 2.168.x.x है, और यदि मैं अपने सेल नेटवर्क पर हूं तो मेरा आईपी 10.174.x.x है? – soleil

+0

आप सही हैं, आपको बस अपने आईपी पते के लिए कचरा मिल जाएगा - यह केवल तभी काम करेगा जब आप कोई वेबसाइट या कुछ हों। मैं राउटर के पते को प्राप्त करने के लिए यहां कुछ उत्तरों का प्रयास करूंगा: http://stackoverflow.com/questions/2113580/objective-c-how-to-fetch-the-router-address?lq=1। –

+0

आपका स्थानीय आईपी पता (उदाहरण: 1 9 2.168.x.x) आपके बाहरी आईपी पते से अलग है। तो यदि आप उपयोगकर्ता के स्थान प्राप्त करने के लिए आईपी पते का उपयोग करने जा रहे हैं, तो आपको अपना बाहरी आईपी पता प्राप्त करने की आवश्यकता है। –

संबंधित मुद्दे