CNContactPickerViewController проверки на номер мобильного телефона в IOS Swift

голоса
20

Я использовал CNContactPickerViewController, чтобы позволить пользователю выбрать контакт из своего списка контактов, хранящегося на телефоне. Я использую имя и номер, используя методы делегата CNContactPicker. Код, как показано ниже

    func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
    // You can fetch selected name and number in the following way

    // user name
    let userName: String = \(contact.givenName) \(contact.familyName)

    // user phone number
    let userPhoneNumbers:[CNLabeledValue<CNPhoneNumber>] = contact.phoneNumbers
    let firstPhoneNumber:CNPhoneNumber = userPhoneNumbers[0].value

    // user phone number string
    let primaryPhoneNumberStr:String = firstPhoneNumber.stringValue

   // print(primaryPhoneNumberStr)

    textfieldName.text = userName
    textfieldContactNo.text = primaryPhoneNumberStr
}

Я хотел бы применить валидация следующие валидаций к нему -

  1. Выбранный не является мобильный телефон или стационарный номер.

  2. Проверьте, если номер имеет код страны.

Может кто-то пожалуйста, помогите мне с выше валидациями.

Задан 05/09/2019 в 06:40
пользователем
На других языках...                            


1 ответов

голоса
1

Это сложный вопрос, который я считаю, что нет правильного && действителен один ответа :) Я объясню почему.

Давайте вашу первую проверку, которую вы хотите , чтобы определить телефонный номер выбранного пользователя контакта является мобильным телефоном или стационарным. В настоящее время IOS не предоставляет опцию вызова наземной линии связи . Существующие варианты , как показано ниже.

введите описание изображения здесь

Как вы можете видеть на картинке выше, вы можете получить номер телефона добавляется к любому из указанной категории. Как можно добиться того, что из кода, как показано ниже.

let phoneNumberType = userPhoneNumbers[0].label

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

    if (phoneNumberType?.contains("Mobile"))! {
        print("This is a mobile number")
    }

Вторая проверка, что вы просите, чтобы проверить, есть ли номер код страны. Посмотрите на следующий отладочный вывод.

введите описание изображения здесь

Как вы можете видеть, даже если реальный номер телефона есть код страны Новой Зеландии COUNTRYCODE ключ дает другую, которую я не знаю , почему. Вы можете извлечь номер телефона и создавать свои собственные валидации (Исй. +, 00 ...) , но есть несколько комбинаций , которые вы должны рассмотреть.

После всех этих усилий, если вы закачиваете сборку в App Store, есть возможность отклоняться (если у вас есть действительные аргументы), так как вы пытаетесь извлечь личную информацию пользователя. Вот почему мой самый первый приговор в силе;)

Ответил 05/09/2019 в 08:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more