CoreTelephony eSIM 功能在设备上不起作用

Posted

技术标签:

【中文标题】CoreTelephony eSIM 功能在设备上不起作用【英文标题】:CoreTelephony eSIM functions not working on device 【发布时间】:2020-02-26 01:28:18 【问题描述】:

在现有的 ios 运营商应用程序中实施 eSIM 时遇到了一些问题。

设置

该应用程序已收到我的public-cellular-plan 权利 了解是让我访问 eSIM 功能的权利 CoreTelephony 的。 我已经在应用的目标中导入了CoreTelephony框架:General > Frameworks, Libraries, and Embedded Content,标记为Do not Embed,与CoreData等其他框架相同。 我已经在调用import CoreTelephony的类中导入了库 我正在 iPhone XR 上通过 Xcode 运行具有正确配置文件的开发版本,它有一个活动的数据计划,所以我确定它支持它。

问题 假设有了这一切,我现在应该可以访问像 supportsCellularPlan 这样的 eSIM 功能,但不幸的是它似乎不起作用:

let provisioning = CTCellularPlanProvisioning()
let supportsESIM = provisioning.supportsCellularPlan()

print("\(supportsESIM)") 
// This prints false but should be true as the XR supports eSIM

我也尝试通过 TestFlight 使用分发配置文件,但结果相同。

关于我做错了什么有什么想法吗?

【问题讨论】:

我也遇到了同样的问题,有更新吗? 你有没有解决这个问题?我也有同样的问题 【参考方案1】:

所以...经过多次尝试,一个错误我能够解决这个小问题。

关于 supportsCellularPlan() 有 2 件事需要了解(当然还有 eSIM 权利)。

第一: 您需要启用 WiFi 才能使其工作,因为它似乎需要与 Apple 连接以进行一些检查。

第二: 它要求在您的info.plist 中正确输入CarrierDescriptors,因为它是运营商绑定的。

一旦你有了它,它应该会按预期工作。

【讨论】:

如果我们相遇,我欠你一杯啤酒 我会记住的 ;) 什么是 CarrierDescriptors。你能分享一下我们需要放在 info.plist @Thomas 中的示例 CarrierDescriptors 吗 @nareshkolindala CarrierDescriptors 是您的运营商提供的唯一代码字典,用于在网络上识别它们。您应该与他们核实这些代码。 @Thomas 能否请您举个例子,它应该在 info.plist 中查看什么?【参考方案2】:

CarrierDescriptors 示例:

  <key>CarrierDescriptors</key>
    <array>
      <dict> 
      <key>MCC</key> //Mobile country code
       <string>’mnc value’</string>
       <key>MNC</key> // Mobile network code
        <string>’mnc value’</string>
      </dict>
    </array>

【讨论】:

【参考方案3】:

您可以在此处找到正确的 MCC/MNC 值:https://www.mcc-mnc.com 顺便说一句,它也适用于我,例如当只有随机值“xxx”时。 但它必须在 plist 中。

【讨论】:

以上是关于CoreTelephony eSIM 功能在设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

天源财富:OPPO携手泰雷兹,全球首发支持5G SA的eSIM功能

天源财富:OPPO携手泰雷兹,全球首发支持5G SA的eSIM功能

天源财富:OPPO携手泰雷兹,全球首发支持5G SA的eSIM功能

使用 CoreTelephony 在 iPhone 上获取 IMEI?

OPPO携手泰雷兹 全球首发支持5G SA的eSIM功能

它来了!明日起,联通eSIM首家试点推向全国!