首页 > 解决方案 > iOS:检查手机是否为双卡?

问题描述

在Android中,我们可以检测手机是单卡还是双卡。正如我们所知,iPhone XS、iPhone XS Max、iPhone XR 及后续机型配备双 SIM 卡,带有 nano-SIM 和 eSIM,除了没有 eSIM 的中国大陆。

A) 我可以通过单击按钮以编程方式调用MFMessageComposeViewController 以将 SMS 发送到特定号码。下面是下面的代码: 这个代码可以告诉我们是否插入了 SIM 卡。但它也适用于 eSIM 吗?

-(void)openMessageViewWithName:(NSString*)contactName withPhone:(NSString *)phone{

CTTelephonyNetworkInfo *networkInfo=[[CTTelephonyNetworkInfo alloc]init];

CTCarrier *carrier=networkInfo.subscriberCellularProvider;

NSString *Countrycode = carrier.isoCountryCode;

if ([Countrycode length]>0)     //Check If Sim Inserted
{

    [self sendSMS:msg recipientList:[NSMutableArray arrayWithObject:phone]];
}
else
{

    [AlertHelper showAlert:@"Message" withMessage:@"No sim card inserted"];
}

//发送消息的方法:

   - (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSMutableArray *)recipients{  
 MFMessageComposeViewController *controller1 = [[MFMessageComposeViewController alloc] init] ;
 controller1 = [[MFMessageComposeViewController alloc] init] ;
 if([MFMessageComposeViewController canSendText])
{
    controller1.body = bodyOfMessage;
    controller1.recipients = recipients;
    controller1.messageComposeDelegate = self;
    [self presentViewController:controller1 animated:YES completion:Nil];
 }
}

B) 是否可以通过编程方式确定我的 iPhone 是双 SIM 卡还是单 SIM 卡?如果是,它是双 SIM 卡,那么我们可以从我的应用程序中选择 SIM 卡来发送短信吗?

请帮助我解决这些问题并帮助我解决问题。

标签: iosobjective-ciphonexcodemfmessagecomposeview

解决方案


正如@PaulW11 在评论中提到的“不,您无法检测 sim 详细信息,也无法选择用于发送消息的 sim。这是由用户控制的”,请仔细阅读以了解

A)首先,您不会在 iOS 中获得与 SIM 相关的数据或电话号码,您获得的唯一详细信息是有关网络的信息,例如运营商名称、移动国家代码、等国家代码、移动网络代码。因此,如果您将 Verizon SIM 替换为 Verizon,您只会看到运营商名称为 Verizon,您将不会获得其他任何信息

解决方案通过单击按钮调用 MFMessageController。这将打开 iOS 默认的 SMS/Messages 应用程序。然后允许用户从消息应用程序本身选择双 SIM 卡的 SIM 卡。

B)无法在您的应用程序中选择特定的 SIM/电话号码。因为在 iOS 中没有像在 Android 中那样做的规定。相反,您必须调用 iOS 中的默认消息应用程序,您可以在其中选择所需的 SIM 卡(在双卡的情况下)发送短信,或者在单卡的情况下,它直接从该号码发送消息


推荐阅读