簡體   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