为什么serviceSubscriberCellularProviders返回nil? (在iOS 12中)

时间:2018-10-17 02:40:22

标签: swift core-telephony

CoreTelephony对CTCarrier的疑问。 我听说我应该在iOS 12中使用serviceSubscriberCellularProviders而不是subscriberCellularProvider,因为不推荐使用subscriberCellularProvider。 所以我写了以下代码。

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成功返回正确的SIM卡信息,但是,serviceSubscriberCellularProviders仅返回零值。

您知道为什么会这样吗?请帮助我

2 个答案:

答案 0 :(得分:0)

这是iOS 12.0.x中的错误,并且已在iOS 12.1中修复。

答案 1 :(得分:-1)

我认为这是苹果的错误。试试这个:

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

它在iPhone XS Max(双SIM卡)上可以很好地工作。这似乎是私有方法。