[英]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.