validation CNContactPickerViewController pour numéro de téléphone mobile dans iOS Swift

voix
20

Je l'ai utilisé CNContactPickerViewController pour permettre à l'utilisateur de choisir un contact dans leur liste de contacts stockés sur le téléphone. J'utilise le nom et le numéro de contact en utilisant des méthodes de délégués CNContactPicker. Code ci-dessous

    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
}

Je voudrais demander à la validation suivante il validation -

  1. pas sélectionnée est un numéro de téléphone fixe ou mobile.

  2. Vérifiez si le numéro a un code de pays.

Quelqu'un peut-il me aider s'il vous plaît les validations ci-dessus.

Créé 05/09/2019 à 06:40
utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Ceci est une question délicate que je crois qu'il n'y a pas de réponse unique correcte && valide :) Je vais vous expliquer pourquoi.

Prenons votre première validation, que vous souhaitez identifier l'utilisateur le numéro de téléphone de contact sélectionné est un téléphone fixe ou mobile. À l' heure actuelle, iOS ne fournit pas un appel d'option fixe . Les options existantes sont comme ci - dessous.

entrez la description d'image ici

Comme vous pouvez le voir dans l'image ci-dessus, vous pouvez obtenir le numéro de téléphone est ajouté à une de la catégorie ci-dessus. Comment vous pouvez obtenir à partir du code qui est comme ci-dessous.

let phoneNumberType = userPhoneNumbers[0].label

Avec un commutateur ou si la déclaration d'autre, vous pouvez filtrer la catégorie. Par exemple

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

La deuxième validation que vous demandez est de vérifier si le numéro a un code de pays. Regardez la sortie de débogage suivante.

entrez la description d'image ici

Comme vous pouvez le voir, même si le nombre réel de téléphone a un code de pays de la Nouvelle - Zélande, la countryCode clé donne un autre, que je ne sais pas pourquoi. Vous pouvez extraire le numéro de téléphone et de créer vos propres validations (Ex. + 00 ...) mais il y a plusieurs combinaisons que vous devez prendre en compte.

Après tous ces efforts, si vous téléchargez votre construction pour App Store, il est possible de se faire rejeter (sauf si vous avez un des arguments valables) puisque vous essayez d'extraire des informations personnelles de l'utilisateur. Voilà pourquoi ma première phrase est valable;)

Créé 05/09/2019 à 08:54
source utilisateur

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