subscriberCellularProvider 在 iOS 12.0 中被弃用

Han*_*kim 5 iphone objective-c cellular-network carrier swift

我正在尝试使用subscriberCellularProvider 制作列表载体。但是我遇到了一个问题,即“ 'subscriberCellularProvider' 在 iOS 12.0 中已被弃用:替换为 serviceSubscriberCellularProviders

我正在使用 XCode 11.4.1 和 iOS 13。有人可以帮我解决这个问题吗?

小智 6

'subscriberCellularProvider' 已弃用:首先在 iOS 12.0 中弃用 将 'subscriberCellularProvider' 替换为 '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;
            
Run Code Online (Sandbox Code Playgroud)

  • 在将其粘贴到更多位置之前,请花点时间阅读[是否可以为多个问题添加重复的答案?](https://meta.stackexchange.com/questions/104227/is-it-acceptable-为几个问题添加重复的答案)。 (5认同)

And*_*a88 5

警告告诉你应该使用它CTTelephonyNetworkInfo().serviceSubscriberCellularProviders,它返回一个可选的类型字典[String : CTCarrier]?。可能已添加以支持具有多个 SIM 卡的设备(例如,带有 SIM 卡 + eSIM 卡的 iPhone XR)

我不知道要与字典一起使用哪个键,在我的情况下(iPhone 8)我只有一个带键的对象,0000000100000001所以我得到了载体:

CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?["0000000100000001"]

你可以试试:

CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.first?.value

但显然不能保证您在应用程序的不同执行之间会获得相同的信息。

我找不到任何关于它的进一步文档