ios 尝试获取运营商名称时出现“--”

rn0zuynd  于 2023-05-23  发布在  iOS
关注(0)|答案(1)|浏览(566)

我正在尝试使用以下代码获取用户运营商名称:

CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier* carrier = info.subscriberCellularProvider;
NSString *mobileCountryCode = carrier.mobileCountryCode;
NSString *carrierName = carrier.carrierName;
NSString *isoCountryCode = carrier.isoCountryCode;
NSString *mobileNetworkCode = carrier.mobileNetworkCode;

但是当我尝试记录时,结果是这样的:

2023-05-22 16:47:39.831078+0700 MotionTrade[7686:985518] carrier name = --
2023-05-22 16:47:39.831260+0700 MotionTrade[7686:985518] mobileCountryCode = 65535
2023-05-22 16:47:39.831342+0700 MotionTrade[7686:985518] mobileNetworkCode = 65535

基本上我已经尝试了每一个堆栈溢出的答案,但我仍然得到相同的结果,
我在我的iPhone上调试这个,不使用WiFi,我只使用物理SIM卡,而不是电子SIM卡。
谁能告诉我为什么我总是听到那个“--"?
在我浏览了一下之后,国家代码“65535”是这可能是移除SIM卡的指示,或者一般来说此时无法拨打电话。
谁能帮帮我?为什么会发生这种情况,以及如何获得适当的Hive提供商名称?
我甚至尝试在我的新空白项目中使用以下代码:

override func viewDidLoad() {
    super.viewDidLoad()

    let networkInfo = CTTelephonyNetworkInfo()
    let carrierName = networkInfo.serviceSubscriberCellularProviders
    
    dump(carrierName)
}

但我在日志中仍然得到相同的结果:

Optional(["0000000100000001": CTCarrier (0x281275d10) {
Carrier name: [--]
Mobile Country Code: [65535]
Mobile Network Code:[65535]
ISO Country Code:[--]
Allows VOIP? [YES]
}
, "0000000100000002": CTCarrier (0x28126ca20) {
Carrier name: [--]
Mobile Country Code: [65535]
Mobile Network Code:[65535]
ISO Country Code:[--]
Allows VOIP? [YES]
 }
  ]    )

请帮帮我为什么我总是得到“--”和65535?有没有办法知道运营商的名字?在iOS 16中获取运营商名称是不可能的吗?

bvhaajcl

bvhaajcl1#

CTCarrier is deprecated with no replacement in iOS 16.此信息不再可用,我不希望它再次可用。我有点惊讶它曾经可用。(苹果通常会避免提供可用于指纹用户的信息,而不是非常明确的用例,通常是权利。
您可以在iOS 16.4发行说明中找到有关返回静态值的公告。

相关问题