iOS 16 CTCarrier去除

18

iOS 16中,似乎已经废弃了CTCarrier。

https://developer.apple.com/documentation/coretelephony/ctcarrier

未来正确的方式是什么,以获得载波信息(如MCC、MNC和ISO国家代码)?

在我们公司,我们使用此信息作为数据点,以协助诈骗者检测等一些其他小但相对重要的事情,例如:限制电话号码登录来自我们不支持的国家/运营商,以节省成本。

我找不到关于这种废弃的原因或任何新类可能支持此信息的WWDC视频。


5
我的期望是没有替代品。这是苹果一直以来都有删除类似功能的历史。我会打开DTS并直接向苹果提问。请注意,虽然被弃用的功能通常会继续存在很长时间(尽管我猜测这些功能被删除是为了防止指纹识别,因此它们可能会更快地消失)。向苹果解释您的使用情况,以及您如何使用这些信息以及它如何帮助您的客户,有时可以导致开发新的API来支持这些用例,并且有时可以减缓API的删除速度(尽管它仍然可能被弃用)。 - Rob Napier
4
有趣的是,CTTelephonyNetworkInfo和serviceSubscriberCellularProviders都没有被弃用。serviceSubscriberCellularProviders返回CTCarrier。 - AutomatonTec
serviceSubscriberCellularProviders无论SIM卡是否插入,都会返回运营商信息。=( - Hogdotmac
2个回答

1

他们将在后续的iOS版本中弃用该功能。在iOS 16.4中,他们会返回一个静态字符串作为CTCarrier.isoCountryCode。我们通过应用程序中的错误报告检测到了这一点 :-(

我们将使用Locale中的以下信息来替换它,因为我们假设用户通常会保留设备所在国家/地区的设置,因此具有与SIM卡相同的ISO国家代码。我知道这并不总是正确的,但现在这是我们能够得到的最接近的结果:

Locale.current.regionCode

0
如果你想找到用户所在的国家,可以使用时间。 时区总是准确的, 例如在Swift中:
let identifier = TimeZone.current.identifier
print(identifier) //return => Asia/Tehran

这并不适用于所有情况。例如,如果用户是美国本土的运营商并且前往其他国家,他们的时区会发生变化。 - daredevil1234

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接