我有以下代码来获取服务提供商的运营商名称:

let ctTelePhony = CTTelephonyNetworkInfo()

func cellPhoneServices() -> String {
    let serviceProvider = ctTelePhony.subscriberCellularProvider
    if let carrierName = serviceProvider?.carrierName {
        globalCarrierName = carrierName
        return carrierName}
    else {
        globalCarrierName = "Nil"
        return "Nil"}
}


根据文档,不建议使用subscriberCellular Provider并将其替换为serviceSubscriberCellularProviders,但是在使用该服务时,它将返回nil。

主要问题是:当我使用上面的代码时,将获得承运人的名称,但是当我切换到飞行模式时,仍会获得承运人的名称。

运营商信息是否在手机上本地存储?使用*3001#12345#*服务时,如果处于飞行模式,则不会显示所有信息。

最佳答案

@property(nonatomic, readonly, retain) NSString *carrierName;


如果我们将设备配置为运营商,则将设备置于飞行模式,即使SIM卡被移除,设备仍会返回运营商。运营商信息可能会安全地保存在设备内部。


  该字符串由运营商提供,并经过格式化后可以显示
  给用户。如果用户正在漫游,则该值不会更改;它
  始终代表用户拥有帐户的提供者。
  
  如果为运营商配置设备,然后卸下SIM卡,则此属性将保留运营商的名称。
  
  如果从未配置设备,则此属性的值为nil
  承运人。

关于ios - CoreTelephony-处于飞行模式时的carrierName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53047212/

10-09 16:31