gpt4 book ai didi

ios - CTTelephonyNetworkInfo 在 iOS 12 上返回 nil

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:59 24 4
gpt4 key购买 nike

我有以下代码:

let networkStatus = CTTelephonyNetworkInfo()

func getCellularInfo() {
if #available(iOS 12.0, *) {
var info = networkStatus.serviceSubscriberCellularProviders
if let aKey = networkStatus.value(forKey: "serviceSubscriberCellularProvider") {
print("aKey: \(aKey)")
}
}
}

此代码返回:

aKey: { 0000000100000001 = "CTCarrier (0x28282e610) {\n\tCarrier name: [Vodacom]\n\tMobile Country Code: [655]\n\tMobile Network Code:[01]\n\tISO Country Code:[za]\n\tAllows VOIP? [YES]\n}\n"; }

我不熟悉这个方法,如何获取与键关联的值,例如\n\tMobile Country Code: [655]/n/

最佳答案

CTTelephonyNetworkInfo 上的属性 serviceSubscriberCellularProviders 返回由字符串键控的 CTCarrier 对象的字典。

var serviceSubscriberCellularProviders: [String : CTCarrier]?

您可以在声明的输出中看到:CTCarrier (0x28282e610) {...

您如何获得该输出尚不清楚,因为您发布的代码虽然语法正确,但从不使用生成的 info 字典变量。

因此使用正确的代码(假设 serviceSubscriberCellularProvider 是关键):

let networkStatus = CTTelephonyNetworkInfo()
if let info = networkStatus.serviceSubscriberCellularProviders,
let carrier = info["serviceSubscriberCellularProvider"] {
//work with carrier object
print("MNC = \(carrier.mobileNetworkCode)")
}

但这似乎不适用于运行 iOS 12.0.1 的单 SIM 卡 iPhone 7。 serviceSubscriberCellularProviders 为零。可能具有双 SIM 卡硬件的较新手机会有不同的 react 。

然而,已弃用的属性仍然有效。

let networkStatus = CTTelephonyNetworkInfo()
if let carrier = networkStatus.subscriberCellularProvider {
print("MNC = \(carrier.mobileNetworkCode ?? "NO CODE")")
}

关于ios - CTTelephonyNetworkInfo 在 iOS 12 上返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53066257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com