繁体   English   中英

iOS:查看手机是否双卡?

[英]iOS : Check whether the phone is dual SIM?

在 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 卡来发送短信吗?

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

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

A)首先,您不会在 iOS 中获得任何与 SIM 卡相关的数据或电话号码,您获得的唯一详细信息是关于 .network 的,例如运营商名称、移动国家代码、isocountry 代码、mobil.networkcode。 因此,如果您将 Verizon SIM 卡替换为 Verizon,您将看到运营商名称仅为 Verizon,除此之外您什么也得不到

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

B) select 您的应用程序中的特定 SIM/电话号码是不可能的。 因为 iOS 中没有像 Android 那样执行此操作。相反,您必须调用 iOS 中的默认消息应用程序,您可以在其中选择所需的 SIM 卡(如果是双卡)来发送短信,或者如果是单卡则直接发送从那个号码发送消息

你试过了吗?

    CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc]init];
    if (@available(iOS 12.0, *)) {
        NSDictionary *providers = [networkInfo serviceSubscriberCellularProviders];
        NSEnumerator *e = [providers objectEnumerator];
        if ([[e.allObjects firstObject] isKindOfClass:(CTCarrier.class)]) {
            NSString *str = ((CTCarrier *)[e.allObjects firstObject]).isoCountryCode;
        }
    } else {
        // do a fallback
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM