11

The documentation states for CTCarrier's carrierName "The value does not change if the user is roaming; it always represents the provider with whom the user has an account."

It does not say the same about mobileNetworkCode however. Does this change based on the current carrier or does it remain constant too?

I am trying find if the phone is roaming in a startMonitoringSignificantLocationChanges callback so would like to avoid geolocating.

Nick Weaver
  • 47,228
  • 12
  • 98
  • 108
Seatwarmer
  • 113
  • 1
  • 5

1 Answers1

20

I'm roaming right now - in Switzerland on an AT&T iPhone 4 on Swisscom. Just wrote a quick program to test. Here's what I got:

2011-04-29 09:01:55.657 test[2094:707] Carrier Name: AT&T
2011-04-29 09:01:55.665 test[2094:707] ISO Country Code: us
2011-04-29 09:01:55.669 test[2094:707] Mobile Country Code: 310
2011-04-29 09:01:55.678 test[2094:707] Mobile Network Code: 410

So, to answer your question, doesn't look like mobile network code changes (410 is AT&T as cited below)

Dan Bennett
  • 1,450
  • 1
  • 15
  • 17
  • 1
    Thanks for checking! According to http://en.wikipedia.org/wiki/Mobile_Network_Code, Country 310 = USA, Network code 410 (in Country 310) is AT&T. So it looks like all that info is read directly from the SIM. – Seatwarmer Apr 30 '11 at 11:28
  • 1
    Yup - tested in the UK and it's still 410. My misunderstanding of mobile network code. Have clarified answer above. – Dan Bennett May 01 '11 at 06:21
  • The only mechanism to detect if you are roaming is through reading an undocumented system file [See previous question](http://stackoverflow.com/questions/900547/is-there-any-way-to-determine-if-the-iphone-is-roaming) which is against the Apple rules – joneswah Jan 10 '12 at 00:12
  • You can also use reverse geocoding to calculate country you're currently in and compare that with the country of the carrier. This isn't exactly reliable, but better than nothing. – Gordon Dove Aug 20 '13 at 10:42