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

Posted

技术标签:

【中文标题】是否有用于检查 iPhone 中是否安装了 eSIM 的 API?【英文标题】:Is there API for checking if eSIM is installed in iphone? 【发布时间】:2019-04-24 15:04:18 【问题描述】:

我需要检查一下,esim 是否安装在 iphone 中。 使用react-native 创建应用程序。找到react-native-carrier-info 它使用CTTelephonyNetworkInfoCTCarrier

CTTelephonyNetworkInfoCTCarrier 是否可以显示是否安装了esim 或有关此的一些信息来得出这样的结论? 在模拟器上我看不到任何信息

阅读coretelephony 但我不确定,这个任务是否有本机 api,或者哪个 api 可以帮助我做出这样的结论

【问题讨论】:

【参考方案1】:

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

  // 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() 方法来加强检查。

【讨论】:

【参考方案2】:

希望对你有帮助:

基本上你需要创建一个Library来访问Objective-C中的原生库:

1 - npm install -g react-native-create-library
2 - react-native-create-library MyLibrary
3 - npm install

在一个新的库中,您是否实现了对本机库的访问:

#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

【讨论】:

感谢您的回答。什么是 NetworkInfo API?我在 developer.apple.com/documentation?changes=latest_minor 和 NetworkInfo 上找不到它 - 会提供有关 esim 的任何信息吗? NetworkInfo 就是我放的名字例如,你放你想要的名字。在此示例中创建的类能够访问本机库的目标 c,您可以通过此处描述的库获取 eSim 信息 developer.apple.com/documentation/coretelephony 并在此处查看您的请求的解决方案 ***.com/questions/13644502/… 哦,我明白了。但主要问题是 - 哪个原生 api 可以帮助我获取有关 esim 的信息(安装与否,或者可能帮助我做出这样的结论)。根据***.com/a/55520052/9136852,似乎 CTTelephonyNetworkInfo 和 CTCarrier 不能帮助我解决我的问题 所以,当我到家时,当我在工作时,我会尝试为您创建一个示例。很抱歉现在不能帮助你。 :( 您好!我实现了一个示例并将其放在 git github.com/lucklpn/SimCardInfo 我使用了我在此站点中找到的示例npmjs.com/package/react-native-carrier-info 我确实发现更容易实现它。我希望能帮助你! ;)

以上是关于是否有用于检查 iPhone 中是否安装了 eSIM 的 API?的主要内容,如果未能解决你的问题,请参考以下文章

ESI 编号的正则表达式 [重复]

用于运行配置文件/检查器的 XCode 配置文件无效 - iPhone 应用程序

是否有用于“主页”和“信息”的标准 iphone 标签栏图标?

从应用程序内部重新安装 iPhone 应用程序

是否可以检查联系人是否退出 iPhone 的联系人列表?

iPhone Wifi 开启还是关闭?