Мы пытаемся позволить кнопке открывать собственный поток eSim. С «react-native-sim-cards-manager» мы продвинулись довольно далеко, но на ios застряли с сообщениями об ошибках: CTCellularPlanProvisioningAddPlanResultUnknown — невозможно настроить eSim из-за неизвестной ошибки
На данный момент мы выяснили, что это связано с тем, что существует два разных способа активации eSim:
[*]Создание мобильного приложения [*]Создание приложения LPA
Мы также генерируем QR-код для активации eSim, где используем эту строку: LPA:1$${smdp_address}$${код_активации}$$1
И это прекрасно работает. Итак, теперь мы пытаемся найти способ просто открыть эту же ссылку, но затем за кнопкой внутри приложения с помощью чего-то вроде Linking.openURL()
Мы также пытаемся создать собственный модуль:
#import "RCTEsimModule.h" @import CoreTelephony; #import #import @implementation RCTEsimModule RCT_EXPORT_MODULE(); RCT_EXPORT_METHOD(активировать:(NSString *)адрес Код активации: (NSString *) Код активации PromiseWithResolver:(RCTPromiseResolveBlock)решить отказник: (RCTPromiseRejectBlock) отклонить) { если (@available(iOS 12.0, *)) { CTCellularPlanProvisioning *plan = [[CTCellularPlanProvisioning alloc] init]; if (plan.supportsCellularPlan != ДА) { NSError *error = [NSError errorWithDomain:@"react.native.esim.native.module" code:2 userInfo:nil]; ignore(@"Не поддерживает тарифный план сотовой связи", @"Эта функция не поддерживается на этом устройстве", error); } еще { CTCellularPlanProvisioningRequest *request = [[CTCellularPlanProvisioningRequest alloc] init]; NSString *addressLPA = [NSString stringWithFormat:@"LPA:1$%@$%@", адрес, код активации]; RCTLogInfo (адресLPA); запрос.адрес = адресLPA; // ЛПА:1$ХХХХХХХХХХХХХ // Пользователь может перевести ваше приложение в фоновый режим до завершения установки eSIM. Чтобы ваше приложение имело возможность выполнить обработчик завершения и получить результат установки, выполните установку eSIM в качестве фоновой задачи. Для этого вызовите BeginBackgroundTask(expirationHandler:) перед вызовом addPlan(with:completionHandler:), затем вызовите endBackgroundTask(_:) внутри обработчика завершения. UIBackgroundTaskIdentifier backgroundTaskIdentifier = [[UIApplication SharedApplication] BeginBackgroundTaskWithExpirationHandler:^{}]; [план addPlanWith: запрос завершенияHandler: ^ (результат CTCellularPlanProvisioningAddPlanResult) { разрешить(@(результат)); [[UIApplication SharedApplication] endBackgroundTask:backgroundTaskIdentifier]; }]; } } еще { NSError *error = [NSError errorWithDomain:@"react.native.esim.native.module" код: 1 userInfo:nil]; ignore(@"Доступность API iOS 12", @"Эта функция не поддерживается до iOS 12.0", error); } } @конец Но пока не повезло. Мы получаем сообщение «Невозможно активировать eSIM».

Будем благодарны за любые советы! Для контекста мы используем Truphone в качестве серверной службы.