convalida CNContactPickerViewController per numero di cellulare in iOS Swift

voti
20

Ho usato CNContactPickerViewController per consentire all'utente di selezionare un contatto dalla loro lista dei contatti memorizzati sul telefono. Io uso il nome del contatto e il numero utilizzando metodi delegato CNContactPicker. Codice come di seguito

    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
}

Vorrei applicare le convalide seguenti convalide ad esso -

  1. non è selezionato un numero di telefono fisso o cellulare.

  2. Controllare se il numero ha un codice di paese.

Qualcuno può aiutarmi con le convalide di cui sopra.

È pubblicato 05/09/2019 alle 06:40
dall'utente
In altre lingue...                            


1 risposte

voti
1

Questa è una domanda difficile che credo non c'è una risposta sola corretta && valida :) ti spiego il perché.

Prendiamo la tua prima convalida, che si vuole identificare il numero di telefono del contatto selezionato dall'utente è un telefono fisso o cellulare. Allo stato attuale, iOS non fornisce un'opzione call fisso . Le opzioni esistenti sono come qui di seguito.

entrare descrizione dell'immagine qui

Come si può vedere nell'immagine sopra, è possibile ottenere il numero di telefono viene aggiunto a qualsiasi valore della categoria superiore. Come si può ottenere che dal codice è il seguente.

let phoneNumberType = userPhoneNumbers[0].label

Con un interruttore o if-else, è possibile filtrare la categoria. Come esempio

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

La seconda convalida che si sta chiedendo è quello di verificare se il numero ha un codice di paese. Guardate il seguente output di debug.

entrare descrizione dell'immagine qui

Come si può vedere, anche se il numero reale telefono è dotato di un codice di paese della Nuova Zelanda, il countryCode chiave dà uno diverso, che io non sono sicuro perché. È possibile estrarre il numero di telefono e creare il proprio convalide (Es. +, 00 ...), ma ci sono diverse combinazioni che è necessario prendere in considerazione.

Dopo tutti questi sforzi, se si sta caricando la build per App Store, non v'è possibilità di ottenere respinto (a meno che avere un valido argomenti) in quanto si sta cercando di estrarre le informazioni personali dell'utente. È per questo che la mia prima frase è valido;)

Risposto il 05/09/2019 a 08:54
fonte dall'utente

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