2013-07-17 2 views
6

Я хочу получать уведомления, когда я вхожу в зону роуминга в моем приложении iOS, я уже прочитал документацию для NSLocale, SCNetworkReachability и основной телефонии (возможно, что-то пропустил). Мне нужно получить эту информацию от sim (или любым другим способом, если это возможно).Как получить статус роуминга в IOS

+1

проверить это два вопрос http://stackoverflow.com/questions/900547/is-there-any-way-to-determi ne-if-the-iphone-is-roaming и http://stackoverflow.com/questions/12473490/is-there-any-ways-to-detect-the-roaming-status-on-ios-6 –

+0

plz share код ... waht вы пробовали до сих пор – madLokesh

+1

до сих пор, я пробовал отслеживать IP-адрес, а затем вызывать веб-сервис, который может дать мне местоположение этого ip, но я не думаю, что использовать веб-сервис. Для сравнения кода страны я могу использовать код страны для мобильной связи от базовой телефонии. 2) второе ограничение заключается в том, что мы должны полагаться на SIM для этой информации, значит, некоторые из них как получить информацию от sim – Rana

ответ

1

Для определения статуса роуминга нет iOS API, но вы можете использовать сторонние сервисы, такие как http://ipinfo.io (мой собственный сервис), чтобы узнать текущую страну четного кода оператора на основе IP-адреса устройства. Затем вы можете сравнить это с деталями CTCarrier, чтобы определить, находится ли устройство в роуминге. Вот стандартный ответ ipinfo.io API:

$ curl ipinfo.io/24.32.148.1 
{ 
    "ip": "24.32.148.1", 
    "hostname": "doc-24-32-148-1.pecos.tx.cebridge.net", 
    "city": "Pecos", 
    "region": "Texas", 
    "country": "US", 
    "loc": "31.3086,-103.5892", 
    "org": "AS7018 AT&T Services, Inc.", 
    "postal": "79772" 
} 

Пользовательские пакеты доступны, которые также включают в МНК/ЦУП детали мобильных IP-адресов, хотя. См. http://ipinfo.io/developers.

+0

Как это работает с VPN? –

+0

Это будет работать только при подключении через сотовую сеть без VPN. Вы можете определить, есть ли у пользователя Wi-Fi/сотовая связь, используя API iOS, и ответ ipinfo.io также укажет, является ли это сотовой связью или нет. –

2

Обычным способом было бы получить код страны оператора от основного интерфейса телефонии, а затем сравнить это с кодом страны с обратным геокодированием местоположения.

Преимущества: работает с VPN и когда пользователь отключил данные при роуминге. Недостатки: не работает без места.

У меня нет никакого кода, не авторских прав для вас, но ключа вам необходимо в месте отметок словарь, что нужно для кода страны является @ «CountryCode» геокодирования будет что-то вроде: -

CLGeocoder* geocoder = [[CLGeocoder alloc] init]; 
[geocoder reverseGeocodeLocation:location completionHandler: ^(NSArray* placemarks){}] 

код страны для поставщика будет

NSString* homeCountry = [netInfo.subscriberCellularProvider isoCountryCode]; 

Надеется, что это помогает

+0

, но, когда я за границей, isoCountryCode по-прежнему является _same_ как измененный код страны с географической привязкой ... так, например, если я поеду в Германию, CoreTelephony вернет «de», и мой reverseGeoCodeLocation также вернет «de», поэтому я * не * роуминг? – dOM

Смежные вопросы