PhoneNumberKit возвращает AG для бесплатных номеров

#swift #phonenumberkit

#swift #phonenumberkit

Вопрос:

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

Я разбираю номера, используя PhoneNumberKit от Mamelroy, чтобы вернуть код страны. Синтаксический анализ работает довольно хорошо (хотя поначалу немного медленно). Однако при вводе номера (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:

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

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

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