why do serviceSubscriberCellularProviders return nil? (in iOS 12)

大城市里の小女人 提交于 2019-12-09 13:28:52

问题


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


回答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.




回答2:


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



来源:https://stackoverflow.com/questions/52846542/why-do-servicesubscribercellularproviders-return-nil-in-ios-12

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!