iOS : 检查 phone 是否是双卡?
iOS : Check whether the phone is dual SIM?
在Android中我们可以检测phone是单卡还是双卡。正如我们所知,iPhone XS、iPhone XS Max、iPhone XR,以及后来的双卡双待功能,带有 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 卡来发送短信吗?
请帮助我解决这些问题并帮助我解决问题。
你试过吗?
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
}
正如@PaulW11 在评论中提到的“不,您无法检测到 sim 卡的详细信息,也无法检测到用于发送消息的 sim 卡。这由用户控制
“
仔细阅读理解
A) 首先,没有 SIM 卡相关数据或 phone 您将在 iOS 中获得的号码,您获得的唯一详细信息是有关网络的信息,例如运营商名称, mobilecountrycode、isocountrycode、mobilenetworkcode。 因此,如果您将 Verizon SIM 卡替换为 Verizon,您将看到运营商名称仅为 Verizon,除此之外您将一无所获
解决方案 按原样单击按钮调用 MFMessageController doing.This 打开 iOS 默认 SMS/Messages 应用程序。如果是双 SIM 卡,则允许用户从消息应用程序本身选择 SIM 卡。
B) 无法在您的应用程序中 select 特定的 SIM/Phone 号码。因为 iOS 中没有像 Android. 中那样做的规定,所以您必须调用 iOS 中的默认消息应用程序,您可以在其中选择所需的 SIM 卡(在双 sim 卡的情况下)用于发送短信,否则在单 sim 卡的情况下它直接从该号码发送消息
在Android中我们可以检测phone是单卡还是双卡。正如我们所知,iPhone XS、iPhone XS Max、iPhone XR,以及后来的双卡双待功能,带有 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 卡来发送短信吗?
请帮助我解决这些问题并帮助我解决问题。
你试过吗?
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
}
正如@PaulW11 在评论中提到的“不,您无法检测到 sim 卡的详细信息,也无法检测到用于发送消息的 sim 卡。这由用户控制 “ 仔细阅读理解
A) 首先,没有 SIM 卡相关数据或 phone 您将在 iOS 中获得的号码,您获得的唯一详细信息是有关网络的信息,例如运营商名称, mobilecountrycode、isocountrycode、mobilenetworkcode。 因此,如果您将 Verizon SIM 卡替换为 Verizon,您将看到运营商名称仅为 Verizon,除此之外您将一无所获
解决方案 按原样单击按钮调用 MFMessageController doing.This 打开 iOS 默认 SMS/Messages 应用程序。如果是双 SIM 卡,则允许用户从消息应用程序本身选择 SIM 卡。
B) 无法在您的应用程序中 select 特定的 SIM/Phone 号码。因为 iOS 中没有像 Android. 中那样做的规定,所以您必须调用 iOS 中的默认消息应用程序,您可以在其中选择所需的 SIM 卡(在双 sim 卡的情况下)用于发送短信,否则在单 sim 卡的情况下它直接从该号码发送消息