swift 是否有API用于检查iPhone中是否安装了eSIM?

qgzx9mmu  于 2023-08-02  发布在  Swift
关注(0)|答案(3)|浏览(134)

我需要检查一下,esim是否安装在iphone中。使用react-native创建应用程序。找到使用CTTelephonyNetworkInfoCTCarrierreact-native-carrier-info
CTTelephonyNetworkInfoCTCarrier可以显示是否安装了esim或有关此的一些信息来做出这样的结论吗?在模拟器上我看不到任何信息
阅读coretelephony但我不确定,是否有本机API用于此任务或哪个api可以帮助我做出这样的结论

dxxyhpgq

dxxyhpgq1#

在Swift中,如果您想检查eSim连接only,您可以:

// First, check if the currentRadioAccessTechnology is nil
  // It means that no physical Sim card is inserted
  let telephonyInfo = CTTelephonyNetworkInfo()
  if telephonyInfo.currentRadioAccessTechnology == nil {
    // Next, on iOS 12 only, you can check the number of services connected
    // With the new serviceCurrentRadioAccessTechnology property
    if #available(iOS 12, *) {
      if let radioTechnologies =
        telephonyInfo.serviceCurrentRadioAccessTechnology, !radioTechnologies.isEmpty {
        // One or more radio services has been detected,
        // the user has one (ore more) eSim package connected to a network
      }
    }
  }

字符串
您可以通过在CTCellularPlanProvisioning上使用新的supportsCellularPlan()方法来加强检查。

mkh04yzy

mkh04yzy2#

希望能对你有所帮助:
基本上,你需要创建一个Library来访问Objective-C中的本地库:
在一个新的库中,您可以实现对本地库的访问:

#import <React/RCTBridgeModule.h>

@interface NetworkInfo : NSObject <RCTBridgeModule>
@end

字符串
实施情况:

// NetworkInfo.m
#import "NetworkInfo.h"
#import <React/RCTLog.h>

@implementation NetworkInfo

// To export a module named NetworkInfo
RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(addEvent:(NSString *)name location:(NSString *)location)
{
  RCTLogInfo(@"Pretending to create an event %@ at %@", name, location);
}

@end


在你的JavaScript中:

import {NativeModules} from 'react-native';
var NetworkInfo = NativeModules.NetworkInfo;


.你的代码
更多信息:native-modules-ios

3z6pesqy

3z6pesqy3#

简单点!
支持iOS 12+,请确保在支持eSim的设备上进行测试。

import CoreTelephony

func eSimSupported() -> Bool {
    let telephonyInfo = CTTelephonyNetworkInfo()
    guard let radioTechnologies =
            telephonyInfo.serviceCurrentRadioAccessTechnology,
          !radioTechnologies.isEmpty else {
        return false
    }
    return true
}

print("eSimSupported = \(eSimSupported())")

字符串

相关问题