3

嗨,我正在使用 SMSComposer 并想从通讯录中向联系人发送短信。我想检测我的 iPhone 中是否有 SIM 卡

有什么办法可以达到这个。?

我尝试了 REachability Classes,但它为您提供了有关 WWAN 和互联网连接的信息。Core Telephony Framework 是否有这样的设施。?iPhone 的运营商名称等类似的东西。??

任何帮助,将不胜感激。谢谢维卡斯

4

2 回答 2

8

斯威夫特/iOS 12+

您可以通过CoreTelephony框架进行尝试,例如。

let noAvailability = CTTelephonyNetworkInfo()
    .serviceSubscriberCellularProviders?
    .values
    .compactMap { $0.mobileCountryCode }
    .isEmpty ?? false

(of )的官方文档包含有关某些边缘情况的更多信息,这可能值得考虑。mobileCountryCodeCTCarrier


原始答案

尝试链接CoreTelephony.framework然后:

#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>

NSString *_code = [[[[CTTelephonyNetworkInfo alloc] init] subscriberCellularProvider] mobileCountryCode];

您可以在官方文档中找到更多信息,但简要说明:

如果以下任何一项适用,则此属性的值是nil

  • 设备中没有 SIM 卡。

  • 该设备不在蜂窝服务范围内。

在飞行模式下,该值可能nil在 iPhone 4S 之前的硬件上。

于 2012-11-30T12:03:40.813 回答
1

为此,您需要添加 MessageUI.framework 框架...

试试这个代码......它可以帮助你

Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
if([messageClass canSendText]){
    // Sim available
}
else{
    //Sim not available
}
于 2012-11-30T11:39:08.057 回答