7

Question about CTCarrier from CoreTelephony. I heard that I should use serviceSubscriberCellularProviders instead of subscriberCellularProvider in iOS 12 because subscriberCellularProvider would be deprecated. So I wrote following codes.

import UIKit
import CoreTelephony

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        let telephony = CTTelephonyNetworkInfo()
        if #available(iOS 12.0, *) {
            let carrier = telephony.serviceSubscriberCellularProviders
            print(carrier)
        }
        else {
            let carrier = telephony.subscriberCellularProvider
            print(carrier)
        }
        
    }

}

SubscriberCellularProvider successfully return right SIM card information, however, serviceSubscriberCellularProviders just return nil value.

Do you know why happens like this? Please help me

HyunJin Yoon
  • 123
  • 1
  • 6

2 Answers2

4

It's a bug in iOS 12.0.x, and it has fixed in iOS 12.1

santos
  • 166
  • 1
  • 4
-1

I think it's an Apple's bug. Try this:

    CTTelephonyNetworkInfo *networkStatus = [[CTTelephonyNetworkInfo alloc] init];
if (@available(iOS 12.0, *)) {
    NSDictionary *info = networkStatus.serviceSubscriberCellularProviders;
    NSLog(@"%@", [networkStatus valueForKey:@"serviceSubscriberCellularProvider"]);
}

It works well on iPhone XS Max (double Sim cards).And it seems to be a private method.

yonglu li
  • 1
  • 3