CTCarrier在所有属性上返回nil

3

我使用以下代码来获取mobileNetworkCode:

let ctCarrier = CTCarrier()

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

使用CTCarrier的任何属性都会返回nil,这似乎是苹果公司的一个bug。

有没有解决这个问题的方法?


你解决了这个问题吗? - elk_cloner
2个回答

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

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

请尝试这个方法,我也测试过直接使用CTCarrier(),它总是返回nil。这个方法可行。

好像苹果忘了将CTCarrier的初始化器设置成私有… - Max
遇到了相同的问题,所有的CTCarrier属性都返回nil。让我想知道是否缺少需要添加的任何功能? - Blue Bot

0

请确保您拥有以下内容:

  1. 在调试时使用真实设备。
  2. 它有一个 SIM 卡。
  3. 设备有信号。
  4. 未开启飞行模式。

关于mobileNetworkCode的讨论:

一个只读的 NSString 对象,表示用户移动服务提供商的数字移动网络代码。将此属性键入为 NSString 对象而不是数字类型可确保 MNC 中的前导零得到尊重。

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


1
以上所有内容都是正确的:
  1. iPhone 7+
  2. 活动 SIM 卡
  3. 设备有接收信号
  4. 飞行模式未开启
- shawn.t
遇到了同样的问题。这个问题有没有什么解决办法? - gEeKyMiNd
遇到了相同的问题,所有的CTCarrier属性都返回nil。让我想知道是否缺少需要添加的任何功能? - Blue Bot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接