iOS: Проверить, поддерживает ли телефон две SIM-карты? - PullRequest
0 голосов
/ 04 августа 2020

В Android мы можем определить, является ли телефон одной или двумя SIM-картами. И, как мы знаем, 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 Dual SIM или Single Сим программно? Если да, то это ДВОЙНАЯ SIM-карта, можем ли мы выбрать SIM-карту в моем приложении для отправки SMS?

Пожалуйста, помогите мне с этим и помогите мне найти обходной путь.

1 Ответ

1 голос
/ 04 августа 2020

вы пробовали это?

    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
    }
...