validação CNContactPickerViewController para o número móvel no iOS Swift

votos
20

Eu tenho usado CNContactPickerViewController para permitir usuário escolher um contato da sua lista de contatos armazenados no telefone. Eu uso o nome e número usando métodos de delegado CNContactPicker. Código como abaixo

    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
}

Eu gostaria de aplicar validações seguintes validações para ele -

  1. não selecionado é um telefone fixo ou número de celular.

  2. Verifique se o número tem um código de país.

Alguém por favor pode me ajudar com as validações acima.

Publicado 05/09/2019 em 06:40
usuário
Em outras línguas...                            


1 respostas

votos
1

Esta é uma pergunta complicada que eu acredito que não existe uma resposta única correta && válida :) eu vou explicar porquê.

Vamos dar a sua primeira validação, o que você deseja identificar o número de telefone do usuário do contato selecionado é um telefone móvel ou fixo. No momento, iOS não está fornecendo uma opção de chamada de telefone fixo . As opções existentes são como abaixo.

digite descrição da imagem aqui

Como você pode ver na imagem acima, você pode obter o número de telefone é adicionado a qualquer uma categoria acima. Como você pode conseguir isso a partir do código é como abaixo.

let phoneNumberType = userPhoneNumbers[0].label

Com um switch ou if-else, você pode filtrar a categoria. Como um exemplo

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

A segunda validação que você está pedindo é para verificar se o número tem um código de país. Olhe para a seguinte saída de depuração.

digite descrição da imagem aqui

Como você pode ver, embora o número de telefone real tem um código de país da Nova Zelândia, o countryCode chave dá um diferente, que eu não tenho certeza porquê. Você pode extrair o número de telefone e criar suas próprias validações (Ex. +, 00 ...), mas existem várias combinações que você precisa considerar.

Depois de todos estes esforços, se você estiver carregando a sua construção a App Store, há possibilidade de ser rejeitado (a menos que você tem argumentos válidos) desde que você está tentando extrair informações pessoais do usuário. É por isso que a minha primeira frase é válido;)

Respondeu 05/09/2019 em 08:54
fonte usuário

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