swift - PhoneNumberKit 返回 AG 以获得免费电话号码
问题描述
我是一个新的 swift 开发人员。我正在使用 Swift 4.2 和 Xcode 10.1。
我正在使用 Mamelroy 的 PhoneNumberKit 解析数字以返回国家代码。解析工作得相当好(虽然一开始有点慢)。但是,当给定一个号码 (888) 或 (866),美国的免费电话号码时,PhoneNumberKit 会返回 AG,它是安提瓜和巴布达的两位数国家代码。AG 的 NPA 前缀是 268,它甚至不接近 888 或 866。
我准备处理 AG 的结果并测试它是否真的是安提瓜或巴布达号码,但我想确认这是 PhoneNumberKit 的问题,而不是我做错了什么。我的代码如下。
class ContactService {
static let phoneNumberKit = PhoneNumberKit()
static func getFlag(number:String) -> String {
// Strip out all characters but +
let basicNumber = number.filter("01234567890+".contains)
// Get the country code and return it
do {
let phoneNumber = try phoneNumberKit.parse(basicNumber)
let regionCode = phoneNumberKit.getRegionCode(of: phoneNumber)
return regionCode!
}
catch {
return "PhoneNumberKit was unable to get the region code."
}
}
}
在我的联系人中返回 AG 的三个号码如下:
1 (866) 814-9582、(866) 255-9679 和 (888) 888-7020
如果这是一个已知问题或是否有其他修复,请告诉我。
解决方案
我在这里找到了答案(尽管我之前搜索过 GitHub):https ://github.com/marmelroy/PhoneNumberKit/issues/135 。它说 AG(美国保护国)是第一个与免费电话号码匹配的国家,因此 PhoneNumberKit 返回 AG。它建议改为返回用户的语言环境。
建议回美国。
我把这个问题和答案留在这里,以帮助其他人用这个意想不到的结果搜索 SO。
推荐阅读
- graph - 如果定义为组的一部分,Graphviz 边缘不会指向记录中的字段
- spring-boot - 这是在spring boot中调用api的正确方法吗?
- javascript - useEffect 运行一次挂钩
- coordinates - ROS Base_link 到laser_link TF。当 btwn base_link 到laser_link 的关系未知或有错误时
- zeromq - ZeroMQ 连接到物理上未连接的套接字
- metadata - NFT 能否拥有基于智能合约变量值更新的元数据?
- android - 如何在 Kotlin 中为 clusterManager.clusterMarkerCollection 创建 InfoWindowAdapter?
- mongodb - 在重命名字段mongodb时创建视图
- python - 如何在 Python 正则表达式中匹配特定的 URL 模式
- android - 如何在Android中左对齐TabLayout的标签文本