【问题标题】:CTCarrier returning nil on all propertiesCTCarrier 在所有属性上返回零
【发布时间】:2019-04-02 16:09:11
【问题描述】:

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

let ctCarrier = CTCarrier()

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

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

有解决这个问题的办法吗?

【问题讨论】:

  • 你有解决这个问题的办法吗??

标签: ios swift core-telephony


【解决方案1】:
let networkInfo = CTTelephonyNetworkInfo()
let carrier = networkInfo.subscriberCellularProvider
let mobileNetworkCode = carrier!.mobileNetworkCode

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

请尝试这种方式,我也直接使用CTCarrier()进行测试,它总是返回nil。这个方法有效。

【讨论】:

  • 看起来 Apple 忘记将 CTCarrier 初始化程序设为私有...
  • 遇到同样的问题,在所有 CTCarrier 属性上获得 nil。让我想知道我是否缺少我应该添加的任何功能?
【解决方案2】:

确保您具备以下条件:

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

关于mobileNetworkCode的讨论:

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

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

【讨论】:

  • 以上都是真的:1. iPhone 7+ 2. 激活的 SIM 3. 设备有接收 4. 飞行模式无效
  • 面临同样的问题。这个问题有解决办法吗??
  • 遇到同样的问题,在所有 CTCarrier 属性上获得 nil。让我想知道我是否缺少我应该添加的任何功能?
猜你喜欢
  • 2015-05-22
  • 2010-09-25
  • 2022-01-26
  • 2012-07-06
  • 2012-01-01
  • 2019-09-25
  • 1970-01-01
  • 2011-09-30
  • 2020-02-27
相关资源
最近更新 更多