Does CTCarrier mobileNetworkCode change when roaming?
Asked Answered
L

1

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.

Leatherleaf answered 27/4, 2011 at 17:14 Comment(0)
M
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)

Metheglin answered 29/4, 2011 at 7:12 Comment(4)
Thanks for checking! According to 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.Leatherleaf
Yup - tested in the UK and it's still 410. My misunderstanding of mobile network code. Have clarified answer above.Metheglin
The only mechanism to detect if you are roaming is through reading an undocumented system file See previous question which is against the Apple rulesLeanora
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.Shellishellie

© 2022 - 2024 — McMap. All rights reserved.