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

时间:2019-10-30 17:14:49

标签: ios swift xcode provisioning-profile core-telephony

在将eSIM集成到现有的iOS运营商应用程序中时遇到了一些麻烦。

设置

  • 该应用已获得public-cellular-plan的权利,我 了解的是使我可以使用eSIM功能的权利 的电话。
  • 我已将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使用分发配置文件,但结果相同。

关于我在做什么错的任何想法吗?

2 个答案:

答案 0 :(得分:5)

所以...经过大量尝试后,我能够解决这个小问题。

要了解supportsCellularPlan()的两件事(当然还有eSIM的权利)。

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

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

一旦有了它,它就会按预期工作。

答案 1 :(得分:-1)

CTCellularPlanProvisioning类的Apple文档,该文档具有supportCellularPlan()实例函数:

Overview

仅适用于具有适当权利的运营商应用。

因此,我们需要使用开发人员帐户来请求eSIM权利。可以在here中找到手册。