CTCarrier在所有属性上返回nil

时间:2018-10-29 17:00:12

标签: ios swift core-telephony

我正在使用以下代码来获取mobileNetworkCode

let ctCarrier = CTCarrier()

    func getMNC() -> String {
        if let mnc = ctCarrier.mobileNetworkCode {
            return mnc
        }
        return "nil"
    }

使用CTCarrier的任何属性都返回nil,这似乎是Apple的错误。

有关此问题的任何解决方法?

2 个答案:

答案 0 :(得分:0)

确保您具有以下条件:

  1. 调试时您使用的是真实设备。
  2. 它有一张SIM卡。
  3. 设备有信号。
  4. 不在飞行模式下。

关于 mobileNetworkCode 的讨论:

  

代表数字移动网络的只读NSString对象   用户的蜂窝服务提供商的代码。将此属性键入为   NSString对象而不是数字类型可确保前导   尊重跨国公司中的零。

参考:https://developer.apple.com/documentation/coretelephony/ctcarrier/1620324-mobilenetworkcode

答案 1 :(得分:0)

let networkInfo = CTTelephonyNetworkInfo()
let carrier = networkInfo.subscriberCellularProvider
let mobileNetworkCode = carrier!.mobileNetworkCode

if mobileNetworkCode != nil {
    //Means got reception
} else {
   //No cellular data
}

请尝试这种方式,我也直接使用CTCarrier()测试,它始终返回nil。此方法有效。