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.

Core Telephony Documentation

Pinned Posts

Posts under Core Telephony tag

33 Posts
Sort by:
Post not yet marked as solved
3 Replies
1.2k Views
Hi I am trying to make mobile app my question Is there any way to use iphone antenna without sim card? I am trying to send data to another iphone with antenna no wifi or bluetooth signal thanks. (kind of virtual sim, and antenna menaing that signal such is LTE is receiveing and sending or we are using to call) I search a lot. if it must be done in kernel please tell.
Posted
by
Post not yet marked as solved
16 Replies
6.9k Views
Here is the crash message, can anyone help me to sovle it?# Version: 7.1.0 (200.2003091736)# Issue ID: 0c524b3dc585196cbe7ed564a4d841f3# Session ID: 30ad28258bdf47d4873df879a4e534cf_DNE_0_v2# Date: 2020-03-14T08:36:00Z# OS Version: 13.3.1 (17D50)# Device: iPhone 8 Plus# RAM Free: 1.5%# Disk Free: 22.3%#0. Crashed: com.apple.main-thread0 CoreFoundation 0x1adf9e444 -[__NSDictionaryM objectForKeyedSubscript:] + 1441 CoreTelephony 0x1b2862640 -[CTTelephonyNetworkInfo updateRat:descriptor:] + 1402 CoreTelephony 0x1b2862534 -[CTTelephonyNetworkInfo queryRatForDescriptor:] + 3923 CoreTelephony 0x1b28622f0 -[CTTelephonyNetworkInfo queryRat] + 2364 CoreTelephony 0x1b285ff90 -[CTTelephonyNetworkInfo initWithClient:] + 9285 CoreTelephony 0x1b285fb90 -[CTTelephonyNetworkInfo init] + 92Here is a part of core codes:CTTelephonyNetworkInfo *telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];CTCarrier *carrier = telephonyNetworkInfo.subscriberCellularProvider;NSString *serviceCarrierName = carrier.carrierName;I use telephonyNetworkInfo, which is a temporary variable, to get the carrier's name. When I need a new carrier's name, I will use CTTelephonyNetworkInfo class to initialize a new one again. Is there a problem?
Posted
by
Post not yet marked as solved
8 Replies
4.4k Views
I work for one of the networks. I am able to successful download the eSIM in iPhone for iOS 13.*. Where I was taken to unknown state (CTCellularPlanProvisioningAddPlanResult) in iOS 14.0 always also it prompt the os screen to install eSIM("Set up Mobile Plan") Please let me know why it take to unknown state always and why OS screen popup ?, please let me know if any configuration needed specific for iOS 14.x Also attached the configuration & prototype code for your reference       hud.show(animated: true)       let plan = CTCellularPlanProvisioning()       self.request = CTCellularPlanProvisioningRequest()       self.request?.address = "" // SMDP Address       self.request?.matchingID = ""  // Acitvation code.       if let validRequest = self.request {         weak var weakSelf = self         plan.addPlan(with: validRequest) {[weak self] result in           self?.hud.hide(animated: true)           switch result {           case .success:             weakSelf?.alertMessageToUser(title: "Hurray !...", message: "ESIM Downloaded Successfully")             print("Successful")           case .fail:             print("ESIM Download failed, contact your carrier")           case .unknown:             print("Unknown details, contact your carrier")           @unknown default:             print("Unknown details, CONTACT CARRIER")           }         }       }     } <array> <dict> <key>MCC</key> <string></string> // Country Code <key>MNC</key> <string></string> //Network Code </dict> </array>   <key>com.apple.security.network.server</key>   <true/>   <key>com.apple.security.network.client</key>   <true/>   <key>com.apple.CommCenter.fine-grained</key>   <array>     <string>spi</string>     <string>sim-authentication</string>     <string>identity</string>   </array>   <key>com.apple.wlan.authentication</key>   <true/>   <key>keychain-access-groups</key>   <array>     <string>apple</string>     <string>com.apple.identities</string>     <string>com.apple.certificates</string>   </array>   <key>com.apple.private.system-keychain</key> I am successful in download eSIM to iPhone for 13.*, Where I was getting the below error for iOS 14.0.1 Logs(OSACTIVITYMODE enabled) Remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated from this process." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated from this process.} BackTrace thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x0000000104cf9428 My Optus`closure #1 in ViewControllerTwo.installESIM_1(result=unknown, self=0x0000000107904d80, weakSelf=0x0000000107904d80) at ViewControllerTwo.swift:44:25  frame #1: 0x0000000104cf99a4 My Optus`thunk for @escaping @callee_guaranteed (@unowned CTCellularPlanProvisioningAddPlanResult) -> () at <compiler-generated>:0   frame #2: 0x0000000194fe412c CoreTelephony`__60-[CTCellularPlanProvisioning addPlanWith:completionHandler:]_block_invoke + 28   frame #3: 0x0000000195053268 CoreTelephony`__90-[CoreTelephonyClient(CellularPlanManager) addPlanWith:appName:appType:completionHandler:]_block_invoke + 36   frame #4: 0x0000000105077b68 libdispatch.dylib`_dispatch_call_block_and_release + 32   frame #5: 0x00000001050795f0 libdispatch.dylib`_dispatch_client_callout + 20   frame #6: 0x0000000105088890 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 1000   frame #7: 0x0000000194a271e4 CoreFoundation`CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 16   frame #8: 0x0000000194a213b4 CoreFoundation`__CFRunLoopRun + 2508   frame #9: 0x0000000194a204bc CoreFoundation`CFRunLoopRunSpecific + 600   frame #10: 0x00000001ab4a5820 GraphicsServices`GSEventRunModal + 164   frame #11: 0x00000001973c4734 UIKitCore`-[UIApplication _run] + 1072   frame #12: 0x00000001973c9e10 UIKitCore`UIApplicationMain + 168   frame #13: 0x0000000104cfb688 My Optus`main at AppDelegate.swift:12:7   frame #14: 0x00000001946e7e60 libdyld.dylib`start + 4
Posted
by
Post not yet marked as solved
30 Replies
17k Views
For iOS 16.X, CTCarrier will be deprecated. https://developer.apple.com/documentation/coretelephony/ctcarrier ①Could someone tell me why CTCarrier will be deprecated? ②What will be the correct way, going forward, to receive information regarding carrier information such as mobileCountryCode, mobileNetworkCode?
Posted
by
Post not yet marked as solved
0 Replies
1.5k Views
This issue has cropped up many times here on DevForums. Someone recently opened a DTS tech support incident about it, and I used that as an opportunity to post a definitive response here. If you have questions or comments about this, start a new thread and tag it with Network so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" iOS Network Signal Strength The iOS SDK has no general-purpose API that returns Wi-Fi or cellular signal strength in real time. Given that this has been the case for more than 10 years, it’s safe to assume that it’s not an accidental omission but a deliberate design choice. For information about the Wi-Fi APIs that are available on iOS, see TN3111 iOS Wi-Fi API overview. Network performance Most folks who ask about this are trying to use the signal strength to estimate network performance. This is a technique that I specifically recommend against. That’s because it produces both false positives and false negatives: The network signal might be weak and yet your app has excellent connectivity. For example, an iOS device on stage at WWDC might have terrible WWAN and Wi-Fi signal but that doesn’t matter because it’s connected to the Ethernet. The network signal might be strong and yet your app has very poor connectivity. For example, if you’re on a train, Wi-Fi signal might be strong in each carriage but the overall connection to the Internet is poor because it’s provided by a single over-stretched WWAN. The only good way to determine whether connectivity is good is to run a network request and see how it performs. If you’re issuing a lot of requests, use the performance of those requests to build a running estimate of how well the network is doing. Indeed, Apple practices what we preach here: This is exactly how HTTP Live Streaming works. Keep in mind that network performance can change from moment to moment. The user’s train might enter or leave a tunnel, the user might walk into a lift, and so on. If you build code to estimate the network performance, make sure it reacts to such changes. But what about this code I found on the ’net? Over the years various folks have used various unsupported techniques to get around this limitation. If you find code on the ’net that, say, uses KVC to read undocumented properties, or grovels through system logs, or walks the view hierarchy of the status bar, don’t use it. Such techniques are unsupported and, assuming they haven’t broken yet, are likely to break in the future. But what about Hotspot Helper? Hotspot Helper does have an API to read Wi-Fi signal strength, namely, the signalStrength property. However, this is not a general-purpose API. Like the rest of Hotspot Helper, this is tied to the specific use case for which it was designed. This value only updates in real time for networks that your hotspot helper is managing, as indicated by the isChosenHelper property. But what about MetricKit? MetricKit is so cool. Amongst other things, it supports the MXCellularConditionMetric payload, which holds a summary of the cellular conditions while your app was running. However, this is not a real-time signal strength value. But what if I’m working for a carrier? This post is about APIs in the iOS SDK. If you’re working for a carrier, discuss your requirements with your carrier’s contact at Apple.
Posted
by
Post not yet marked as solved
12 Replies
3k Views
Hi, We have an app passing digits once connected to the PBX. We are simply dialing (***) ***-xxxx, yyy. After upgrading to Rls 16.4 PBX is no longer correctly decoding "yyy" digits represented by DTMF. If we press digits manually it works correctly, which leads us to conclude, Rls 16.4 sends to short DTMF. Upgrade to 16.4.1 didn't fix that bug. Peter
Posted
by
Post not yet marked as solved
1 Replies
977 Views
Hi to everyone, I'm trying to implement on my app the process to install eSIMs directly from my app. We have been authorized by Apple to use the CoreTelephony framework, and I've already implemented the functions but I need to compile first the the CarrierDescriptors Key in the info.plist file. CarrierDescriptors <dict> <key>MCC</key> <string>’mnc value’</string> <key>MNC</key> <string>’mnc value’</string> </dict> </array> Now the point is, that we are just a reseller of eSIMs, so we are not the real carrier, and so we don't have our MCC or MNC values. So what could or should we write there? Our providers should give us those data based on the carriers who provides them the eSIMs? Thanks a lot for any help or advice!
Posted
by
Post not yet marked as solved
0 Replies
681 Views
I think it is about time iCloud Backup should be extended to enable Cellular Data be enabled for it's data Use. My Understanding has been those from Africa and other less highly technological places have had it difficult in backing up their phones on iCloud due to the exclusive request for Wi-Fi. At these places Cellular data is mostly the source of readily source for for all internet connectivity's. So I think there should be a conscious effort to allow iCloud Backups through Cellular Data.
Posted
by
Post not yet marked as solved
1 Replies
970 Views
I'd like to allow the speech synthesizer to play on the device speaker while simultaneously mixing with a phone call. I've worked with a number of different configurations but am unable to find a configuration that achieves the functionality I am trying to achieve - or allows mixing with a phone call at all. There is a flag: mixToTelephonyUplink that seems to suggest that at least some mixing with a phone call is possible using the speech synthesizer, but I'm currently unable to find almost any documentation about this flag besides basic API docs. I've had some some luck at least getting the synthesizer to always play to the speaker with the following audio session configuration - but the sound never is mixed with a phone call. Instead, it is ducked and muted while the phone call takes place. I've tried quite a few configuration combinations for the category and overrides, but nothings seems to work quite as I'd expect it to. synthesizer.mixToTelephonyUplink = true try? audioSession.setCategory(.playback, mode: .voicePrompt, options: [.mixWithOthers, .defaultToSpeaker]) try? audioSession.setActive(true, options: []) try? audioSession.overrideOutputAudioPort(.speaker) Is there some kind of documentation for this that's off the beaten path that I'm somehow missing? I'm going to continue with guess and check, but I'm starting to think this flag - and the functionality it implies, actually wasn't ever fully implemented.
Posted
by
Post not yet marked as solved
2 Replies
1.4k Views
I am working for an MVNE/MVNA In September 2022, I filed an eSIM Access Entitlement request through the Apple Developer Portal. I didn't receive any feedback from Apple, and we can't see access given as yet. how do I follow up with this? Who do I contact? We have a customer going live in 2 weeks and we need this enabled. We have reached out to our partner carrier and they have not heard anything either. Thank you
Posted
by
Post not yet marked as solved
1 Replies
731 Views
b4 IOS 17 can detect sim card swap with 'CTTelephonyNetworkInfo' but after update IOS 17 can not use this library is there anyway to dectecting swapping the sim?
Posted
by
Post not yet marked as solved
0 Replies
759 Views
Hi I'm developing a full-duplex iPhone voice chat application and I'd like to intercept bluetooth headset button events to perform certain actions in my app while maintaining a full-duplex audio. I'm using the MediaPlay to intercept remote bluetooth AVRCP MPRemoteCommandEvent play/pause events as well setting AVAudioSession to use the BluetoothA2DP category, however, when I do this, I can't seem to use the bluetooth microphone as an audio input. Specifically, when I query AVAudioSession for available inputs, bluetooth is not returned. I'm guessing this is because A2DP is a half-duplex protocol, but my understanding is that AVRCP events are only available with A2DP. The other bluetooth profile choice is HSP (AVAudioSession category Bluetooth), which works for full-duplex audio, but does not appear to provide a way to intercept the various AT commands from this profile unless I'm in an actual telephone call. For example, when I use HSP and press a button on my headset, I see in the logs the AT+CHUP command being sent from the headset to the phone. Two questions: Is there a way to use a bluetooth microphone while using A2DP for output at the same time? If the above can't be done, is there a way to intercept the HSP AT control commands from a headset without being in a telephone call? Thanks.
Posted
by
Post not yet marked as solved
1 Replies
719 Views
Hello, I work for a USA cell phone carrier and we have our own SIM cards. We'd like to add a carrier bundle so we can have our carrier settings predefined in iOS devices. Could someone explain what the process is? Thanks
Posted
by
Post not yet marked as solved
2 Replies
1k Views
In the Apple's documentation link below, it says CTCarrier is deprecated. Does this mean this class wouldn't work on iOS 16.0+ or iOS 17+. Notice, in the web page, it says "iOS 4.0 - 16.0 Deprecated." This makes me wonder if this API wouldn't work on iOS 17+ Any help is appreciated.
Posted
by
Post not yet marked as solved
1 Replies
750 Views
Our app is payment related app &amp; we are doing device binding. So, based on sim detection we have implemented feature for device binding. If sim is not present in device then, we have to show alert to the user for "No sim found". As per current deprecation in CTCareer, We are always getting static details for sim card, so we are not able to detect, either sim is there or not in device. Is there any solution to detect sim is there or not in device?
Posted
by
Post not yet marked as solved
2 Replies
694 Views
Hi Everyone, I have enabled eSIM entitlements to check eSIM, but I am always getting false for supportsCellularPlan and supportsEmbeddedSIM although my device having the esim feature. I followed each step from this stack overflow answer https://stackoverflow.com/a/60162323 Can anyone help me out here? below is the code I used:- private let provisioning = CTCellularPlanProvisioning() let ctpr = CTCellularPlanProvisioningRequest() ctpr.address = "address$" ctpr.matchingID = "string$" let supportsESIM = provisioning.supportsCellularPlan() if #available(iOS 12.0, *) { let ctcp = CTCellularPlanProvisioning() ctcp.addPlan(with: ctpr) { (result) in switch result { case .unknown: print("Sorry unknown error") case .fail: print("Oops! something went wrong") case .success: print("Yay! eSIM installed successfully") @unknown default: print("Oops! something went wrong") } } } print(provisioning.supportsEmbeddedSIM) print(supportsESIM) this is the entitlements SS this is the info.plist SS
Posted
by
Post not yet marked as solved
1 Replies
488 Views
Why some apps like tiktok have access to sim card info without getting access? So without my permission they can identify me.
Posted
by