我试图使用subscriberCellularProvider来创建列表载体。但是我遇到了一个问题,即"'subscriberCellularProvider'在iOS 12.0中已被弃用:被serviceSubscriberCellularProviders取代"。
我正在使用XCode 11.4.1和iOS 13。有人能帮我解决这个问题吗?
我试图使用subscriberCellularProvider来创建列表载体。但是我遇到了一个问题,即"'subscriberCellularProvider'在iOS 12.0中已被弃用:被serviceSubscriberCellularProviders取代"。
我正在使用XCode 11.4.1和iOS 13。有人能帮我解决这个问题吗?
CTTelephonyNetworkInfo().serviceSubscriberCellularProviders
,它返回一个可选的字典类型[String : CTCarrier]?
。这可能是为了支持具有多个sim卡的设备(例如带SIM + eSIM的iPhone XR)。0000000100000001
的对象,所以我使用以下代码获取运营商信息:
CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?["0000000100000001"]
你还可以尝试以下代码:
CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.first?.value
但显然不能保证在您的应用程序的不同执行之间获得相同的信息。'subscriberCellularProvider'已弃用: iOS 12.0中首次弃用。请使用'serviceSubscriberCellularProviders'代替
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
NSDictionary<NSString *, CTCarrier *> *providers= [networkInfo serviceSubscriberCellularProviders];
CTCarrier *carrier = providers.allValues.firstObject;
NSString* isoCountryCode = carrier.isoCountryCode;
NSString* mobileNetworkCode = carrier.mobileNetworkCode;
NSString* mobileCountryCode = carrier.mobileCountryCode;
NSString* carrierName = carrier.carrierName;
CTTelephonyNetworkInfo().serviceSubscriberCellularProviders
至少返回2个元素,其中一个可能具有运营商信息。CTCarrier (0x283d8e940) {
Carrier name: [<nil>]
Mobile Country Code: [<nil>]
Mobile Network Code:[<nil>]
ISO Country Code:[<nil>]
Allows VOIP? [YES]
我猜这是为未使用的eSIM而准备的。
所以最好检查运营商名称不是NIL。
let netInfo = CTTelephonyNetworkInfo()
let carrier = netInfo.serviceSubscriberCellularProviders?.filter({ $0.value.carrierName != nil }).first?.value
serviceSubscriberCellularProviders
而不是subscriberCellularProvider
。 - Vikram Parimi