Hello,
I am investigating a roaming network selection use case on iPhone and would like to know whether Apple provides any supported API, entitlement, carrier capability, or carrier-specific integration that allows an application or a mobile network operator to access or control PLMN selection while roaming.
My specific use case is:
- Device: iPhone 17
- iOS: 26.6.1
- Home operator: Orange France
- Roaming country: Switzerland
- Automatically selected roaming network: Salt
- Preferred roaming network: Swisscom
At this location, Salt has very poor cellular coverage while Swisscom has excellent coverage. The user can manually select Swisscom through:
Settings → Cellular → Network Selection → Swisscom
I would like to determine whether there is any supported mechanism for a carrier or a carrier-authorized application to:
- Read the currently selected roaming PLMN.
- Obtain the available roaming PLMNs.
- Programmatically select a specific PLMN.
- Configure a preferred roaming PLMN.
- Ask the modem to prefer one roaming partner over another.
- Access any carrier-only/private entitlement that provides such functionality.
For example, could an authorized Orange carrier application or carrier integration request that Swisscom (MCC 228 / MNC 01) be preferred over Salt (MCC 228 / MNC 03) while roaming in Switzerland?
I understand that Core Telephony provides access to some carrier information and that certain capabilities require Apple-granted entitlements.
If this functionality is not available to third-party applications, is there a carrier integration, carrier configuration, SIM/eSIM profile mechanism, or other Apple-supported mechanism that can influence the preferred roaming PLMN?
I am specifically looking for a supported solution and not a jailbreak or other unsupported/private API.
Thank you.
My question is specifically whether Apple provides any carrier-specific
This isn’t something I can answer. See this reply for an explanation.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"