PhoneNumberKit возвращает AG для бесплатных номеров - PullRequest
0 голосов
/ 27 марта 2019

Я новый быстрый разработчик. Я использую Swift 4.2 и Xcode 10.1.

Я анализирую номера, используя PhoneNumberKit Мамелроя, чтобы вернуть код страны. Разбор работает довольно хорошо (хотя сначала немного медленно). Однако при получении номера (888) или (866) бесплатных номеров в США PhoneNumberKit возвращает AG, представляющее собой двузначный код страны для Антигуа и Барбуды. Префикс NPA для AG - 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 Ответ

1 голос
/ 27 марта 2019

Я нашел ответ здесь (хотя я искал GitHub ранее): https://github.com/marmelroy/PhoneNumberKit/issues/135. В нем говорится, что AG (протекторат США) является первой страной, которая сопоставляет бесплатные номера, поэтому PhoneNumberKit возвращает AG.Вместо этого рекомендуется вернуть локаль пользователя.

Я предлагаю вернуть США.

Я оставляю этот вопрос и отвечаю здесь, чтобы помочь другим, ищущим SO с этим неожиданным результатом.

...