PhoneNumberKit返回AG以获取免费电话号码

时间:2019-03-27 17:40:59

标签: swift phonenumberkit

我是一名新的快速开发人员。我正在使用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

如果这是已知问题或是否有其他修复方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

我在这里找到了一个答案(尽管我以前已经搜索过GitHub):https://github.com/marmelroy/PhoneNumberKit/issues/135。它说AG(美国保护国)是第一个与免费电话号码匹配的国家,因此PhoneNumberKit返回AG。建议改为返回用户的语言环境。

我建议返回美国。

我在这里留下这个问题并回答,以帮助其他人以这种意外结果搜索SO。