Core Telephony

RSS for tag

Access information about a user’s cellular service provider, such as its unique identifier and whether the carrier allows VoIP, using Core Telephony.

Posts under Core Telephony tag

28 Posts

Post

Replies

Boosts

Views

Activity

Strange network information values ​​in response to DeviceInformation command on iPad
I am checking the response of DeviceInformation Command to collect network information from iPad. On iPad(iPad Pro 11, M4) devices that use WiFi without inserting Usim or Esim, network values ​​such as CurrentMCC and ICCID are received in response to the DeviceInformation command. cf.)Even though it may be garbage value, I blurred the unique information just in case. <key>ServiceSubscriptions</key> <array> <dict> <key>CarrierSettingsVersion</key> <string>61.0</string> <key>CurrentCarrierNetwork</key> <string></string> <key>CurrentMCC</key> <string>450</string> <key>CurrentMNC</key> <string>08</string> <key>EID</key> <string>blah blah</string> <key>ICCID</key> <string>blah balh</string> <key>IMEI</key> <string>blah blah</string> <key>IsDataPreferred</key> <true/> <key>IsRoaming</key> <true/> <key>IsVoicePreferred</key> <false/> <key>Label</key> <string>Provisioning</string> <key>LabelID</key> <string>00000000-0000-0000-0000-000000000000</string> <key>PhoneNumber</key> <string></string> <key>Slot</key> <string>CTSubscriptionSlotOne</string> <key>SubscriberCarrierNetwork</key> <string>iPad</string> </dict> </array> This is a bit weird. If I collect the same information from an iPhone(iPhone 15 Pro Max) that only uses wifi and does not use Usim or Esim, it does not respond with values ​​like ICCID, CurrentMCC, etc. <key>ServiceSubscriptions</key> <array> <dict> <key>IMEI</key> <string>blah blah</string> <key>Slot</key> <string>CTSubscriptionSlotOne</string> </dict> <dict> <key>EID</key> <string>blah blah</string> <key>IMEI</key> <string>blah blah</string> <key>Slot</key> <string>CTSubscriptionSlotTwo</string> </dict> </array> I'm confused by the network information collected. Is there a reason why the collected network information of iPad and iPhone are different?
0
0
286
Jun ’25
How to detect the SIM card status?
Before iOS16, we can use https://developer.apple.com/documentation/coretelephony/ctcarrier But after iOS this is deprecated and has no replacement. There are some discussions on it, eg. https://developer.apple.com/forums/thread/714876 https://developer.apple.com/forums/thread/770400 Now I asked AI, then it provided this solution, to check the serviceCurrentRadioAccessTechnology, so it this ok to check the SIM card status? var hasSIMCard = false let info = CTTelephonyNetworkInfo() if let rat = info.serviceCurrentRadioAccessTechnology, rat.values.contains(where: { !$0.isEmpty }) { hasSIMCard = true. // has RAT } BTW, I can see a lot of changes in the Core Telephony framework. https://developer.apple.com/documentation/coretelephony 1.isSIMInserted https://developer.apple.com/documentation/coretelephony/ctsubscriber/issiminserted A Boolean property that indicates whether a SIM is present. iOS 18.0+ iPadOS 18.0+ This value property is true if the system finds a SIM matching the Info.plist carrier information (MCC / MNC / GID1 / GID2). Is this ok to check SIM insert status, this seems must preconfig some info in the info.plist. 2.iOS26 provide CTCellularPlanStatus https://developer.apple.com/documentation/coretelephony/ctcellularplanstatus Can I use this to check SIM status?
2
0
285
Jun ’25
Alternative to CoreTelephony for Accessing Cellular Network Information in Private iOS App
Hello, I am developing a private internal Flutter app for our customer, which will not be published on the Apple Store. One of the key features of this app is to collect RF strength metrics to share user experience with the network. For Android, we successfully implemented the required functionality and are able to collect the following metrics: Signal strength level (0-4) Signal strength in dBm RSSI RSRQ Cell ID Location Area Code Carrier name Mobile country code Mobile network code Radio access technology Connection status Duplex mode However, for iOS, we are facing challenges with CoreTelephony, which is not returning the necessary data. We are aware that CoreTelephony is deprecated and are looking for alternatives. We noticed that a lot of the information we need is available via FTMInternal-4. Is there a way to access this data for a private app? Are there any other recommended approaches or frameworks that can be used to gather cellular network information on iOS for an app that won't be distributed via the Apple Store? my swift code import Foundation import CoreTelephony class RfSignalStrengthImpl: RfSignalStrengthApi { func getCellularSignalStrength(completion: @escaping (Result<CellularSignalStrength, Error>) -> Void) { let networkInfo = CTTelephonyNetworkInfo() guard let carrier = networkInfo.serviceSubscriberCellularProviders?.values.first else { completion(.failure(NSError(domain: "com.xxxx.yyyy", code: 0, userInfo: [NSLocalizedDescriptionKey: "Carrier not found"]))) return } let carrierName = carrier.carrierName ?? "Unknown" let mobileCountryCode = carrier.mobileCountryCode ?? "Unknown" let mobileNetworkCode = carrier.mobileNetworkCode ?? "Unknown" let radioAccessTechnology = networkInfo.serviceCurrentRadioAccessTechnology?.values.first ?? "Unknown" var connectionStatus = "Unknown" ... ... } Thank you for your assistance.
6
0
1.9k
Jun ’25
Need to check Call Status without using CallKit
My app requirement is to check that User is on call while doing transaction. If user on call then we need to show Caution alert. For this requirement we used CallKit to detect Call status and it's working fine but recently Apple has rejected the application because of Callkit that is banned in China. Could you please provide any solution to check the Call Status only.
3
0
287
May ’25
Why is HMAC_SHA_512 unsupported on eSIM Java Card 3.0.5 in iPhone?
We are currently working on deploying a Java Card applet onto the eSIM (eUICC) inside an iPhone. According to the GSMA SGP specifications, the eUICC is expected to support Java Card 3.0.5 Classic Edition. As defined in the Java Card 3.0.5 specification, the javacardx.crypto package should support standard algorithms including MessageDigest.ALG_HMAC_SHA_512. However, during our testing on the iPhone's embedded eSIM, we found that ALG_HMAC_SHA_512 appears to be unsupported or disabled. The same applet functions correctly on external Java Card platforms that support Java Card 3.0.5, leading us to believe that this is a restriction specific to the iPhone’s eUICC implementation. Our main questions are: Why is ALG_HMAC_SHA_512, which is part of the standard Java Card 3.0.5 specification, not available on the iPhone eSIM? Has Apple imposed any internal restrictions or exclusions on certain crypto algorithms for security, performance, or compliance reasons? Is there a list or documentation of supported and unsupported Java Card APIs or algorithms on the eUICC used in iPhones? Any insights from Apple engineers or other developers with experience on this topic would be greatly appreciated. Thank you in advance!
1
0
199
May ’25
Default Calling App on vehicle (Bluetooth)
I have a question about the default calling function that is supported by third-party apps on iOS from 18.2. In most cases, it works normally with the default calling app setting, but the problem occurs when connected to the vehicle via Bluetooth. Install the app that sets the default calling app on the device. Keep the phone locked. Connect the Bluetooth to the vehicle. Try to make a call using the phone button on the vehicle's steering wheel. When trying to make a call from the vehicle, the call fails (It seems that the app cannot be opened when the phone is locked even if the default calling app setting is on.) When you unlock the phone and turn on the app, the call is made. As far as I understand, if the app scheme is called with tel:// when set as the default calling app, it only proceeds with the intent connection to the app set as the default calling app, and the permissions that Apple's default call app has cannot be used. Accordingly, my questions are as follows: Is there a way to make a call with an external phone call input when locked on device? If 1 is not possible, can you provide a branch to Apple's default call app (telephony://) in the above situation?
1
0
250
Apr ’25
Strange network information values ​​in response to DeviceInformation command on iPad
I am checking the response of DeviceInformation Command to collect network information from iPad. On iPad(iPad Pro 11, M4) devices that use WiFi without inserting Usim or Esim, network values ​​such as CurrentMCC and ICCID are received in response to the DeviceInformation command. cf.)Even though it may be garbage value, I blurred the unique information just in case. <key>ServiceSubscriptions</key> <array> <dict> <key>CarrierSettingsVersion</key> <string>61.0</string> <key>CurrentCarrierNetwork</key> <string></string> <key>CurrentMCC</key> <string>450</string> <key>CurrentMNC</key> <string>08</string> <key>EID</key> <string>blah blah</string> <key>ICCID</key> <string>blah balh</string> <key>IMEI</key> <string>blah blah</string> <key>IsDataPreferred</key> <true/> <key>IsRoaming</key> <true/> <key>IsVoicePreferred</key> <false/> <key>Label</key> <string>Provisioning</string> <key>LabelID</key> <string>00000000-0000-0000-0000-000000000000</string> <key>PhoneNumber</key> <string></string> <key>Slot</key> <string>CTSubscriptionSlotOne</string> <key>SubscriberCarrierNetwork</key> <string>iPad</string> </dict> </array> This is a bit weird. If I collect the same information from an iPhone(iPhone 15 Pro Max) that only uses wifi and does not use Usim or Esim, it does not respond with values ​​like ICCID, CurrentMCC, etc. <key>ServiceSubscriptions</key> <array> <dict> <key>IMEI</key> <string>blah blah</string> <key>Slot</key> <string>CTSubscriptionSlotOne</string> </dict> <dict> <key>EID</key> <string>blah blah</string> <key>IMEI</key> <string>blah blah</string> <key>Slot</key> <string>CTSubscriptionSlotTwo</string> </dict> </array> I'm confused by the network information collected. Is there a reason why the collected network information of iPad and iPhone are different?
Replies
0
Boosts
0
Views
286
Activity
Jun ’25
How to detect the SIM card status?
Before iOS16, we can use https://developer.apple.com/documentation/coretelephony/ctcarrier But after iOS this is deprecated and has no replacement. There are some discussions on it, eg. https://developer.apple.com/forums/thread/714876 https://developer.apple.com/forums/thread/770400 Now I asked AI, then it provided this solution, to check the serviceCurrentRadioAccessTechnology, so it this ok to check the SIM card status? var hasSIMCard = false let info = CTTelephonyNetworkInfo() if let rat = info.serviceCurrentRadioAccessTechnology, rat.values.contains(where: { !$0.isEmpty }) { hasSIMCard = true. // has RAT } BTW, I can see a lot of changes in the Core Telephony framework. https://developer.apple.com/documentation/coretelephony 1.isSIMInserted https://developer.apple.com/documentation/coretelephony/ctsubscriber/issiminserted A Boolean property that indicates whether a SIM is present. iOS 18.0+ iPadOS 18.0+ This value property is true if the system finds a SIM matching the Info.plist carrier information (MCC / MNC / GID1 / GID2). Is this ok to check SIM insert status, this seems must preconfig some info in the info.plist. 2.iOS26 provide CTCellularPlanStatus https://developer.apple.com/documentation/coretelephony/ctcellularplanstatus Can I use this to check SIM status?
Replies
2
Boosts
0
Views
285
Activity
Jun ’25
Alternative to CoreTelephony for Accessing Cellular Network Information in Private iOS App
Hello, I am developing a private internal Flutter app for our customer, which will not be published on the Apple Store. One of the key features of this app is to collect RF strength metrics to share user experience with the network. For Android, we successfully implemented the required functionality and are able to collect the following metrics: Signal strength level (0-4) Signal strength in dBm RSSI RSRQ Cell ID Location Area Code Carrier name Mobile country code Mobile network code Radio access technology Connection status Duplex mode However, for iOS, we are facing challenges with CoreTelephony, which is not returning the necessary data. We are aware that CoreTelephony is deprecated and are looking for alternatives. We noticed that a lot of the information we need is available via FTMInternal-4. Is there a way to access this data for a private app? Are there any other recommended approaches or frameworks that can be used to gather cellular network information on iOS for an app that won't be distributed via the Apple Store? my swift code import Foundation import CoreTelephony class RfSignalStrengthImpl: RfSignalStrengthApi { func getCellularSignalStrength(completion: @escaping (Result<CellularSignalStrength, Error>) -> Void) { let networkInfo = CTTelephonyNetworkInfo() guard let carrier = networkInfo.serviceSubscriberCellularProviders?.values.first else { completion(.failure(NSError(domain: "com.xxxx.yyyy", code: 0, userInfo: [NSLocalizedDescriptionKey: "Carrier not found"]))) return } let carrierName = carrier.carrierName ?? "Unknown" let mobileCountryCode = carrier.mobileCountryCode ?? "Unknown" let mobileNetworkCode = carrier.mobileNetworkCode ?? "Unknown" let radioAccessTechnology = networkInfo.serviceCurrentRadioAccessTechnology?.values.first ?? "Unknown" var connectionStatus = "Unknown" ... ... } Thank you for your assistance.
Replies
6
Boosts
0
Views
1.9k
Activity
Jun ’25
Need to check Call Status without using CallKit
My app requirement is to check that User is on call while doing transaction. If user on call then we need to show Caution alert. For this requirement we used CallKit to detect Call status and it's working fine but recently Apple has rejected the application because of Callkit that is banned in China. Could you please provide any solution to check the Call Status only.
Replies
3
Boosts
0
Views
287
Activity
May ’25
Getting ICCID as a Carrier Service
I’m working on carrier services that require ICCID. Is there a special entitlement to be able to access this info? What’s the process to request authorization if available?
Replies
1
Boosts
0
Views
172
Activity
May ’25
Why is HMAC_SHA_512 unsupported on eSIM Java Card 3.0.5 in iPhone?
We are currently working on deploying a Java Card applet onto the eSIM (eUICC) inside an iPhone. According to the GSMA SGP specifications, the eUICC is expected to support Java Card 3.0.5 Classic Edition. As defined in the Java Card 3.0.5 specification, the javacardx.crypto package should support standard algorithms including MessageDigest.ALG_HMAC_SHA_512. However, during our testing on the iPhone's embedded eSIM, we found that ALG_HMAC_SHA_512 appears to be unsupported or disabled. The same applet functions correctly on external Java Card platforms that support Java Card 3.0.5, leading us to believe that this is a restriction specific to the iPhone’s eUICC implementation. Our main questions are: Why is ALG_HMAC_SHA_512, which is part of the standard Java Card 3.0.5 specification, not available on the iPhone eSIM? Has Apple imposed any internal restrictions or exclusions on certain crypto algorithms for security, performance, or compliance reasons? Is there a list or documentation of supported and unsupported Java Card APIs or algorithms on the eUICC used in iPhones? Any insights from Apple engineers or other developers with experience on this topic would be greatly appreciated. Thank you in advance!
Replies
1
Boosts
0
Views
199
Activity
May ’25
Xcode 16.3打包的App在iOS 13 - iOS 14.0中Crash
DYLD, symbol '_CTRadioAccessTechnologyNR' not found, expected in '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony'
Replies
1
Boosts
0
Views
236
Activity
Apr ’25
Default Calling App on vehicle (Bluetooth)
I have a question about the default calling function that is supported by third-party apps on iOS from 18.2. In most cases, it works normally with the default calling app setting, but the problem occurs when connected to the vehicle via Bluetooth. Install the app that sets the default calling app on the device. Keep the phone locked. Connect the Bluetooth to the vehicle. Try to make a call using the phone button on the vehicle's steering wheel. When trying to make a call from the vehicle, the call fails (It seems that the app cannot be opened when the phone is locked even if the default calling app setting is on.) When you unlock the phone and turn on the app, the call is made. As far as I understand, if the app scheme is called with tel:// when set as the default calling app, it only proceeds with the intent connection to the app set as the default calling app, and the permissions that Apple's default call app has cannot be used. Accordingly, my questions are as follows: Is there a way to make a call with an external phone call input when locked on device? If 1 is not possible, can you provide a branch to Apple's default call app (telephony://) in the above situation?
Replies
1
Boosts
0
Views
250
Activity
Apr ’25