CNContactPickerViewController Validierung für Handy-Nummer in iOS Swift

stimmen
20

Ich habe CNContactPickerViewController verwendet Benutzer zu ermöglichen, einen Kontakt aus der Kontaktliste auf dem Telefon gespeichert zu holen. Ich benutze die Kontaktnamen und Nummer mit CNContactPicker Delegatmethoden. Code wie unten

    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
}

Ich möchte Validierungen folgende Validierungen, um es anzuwenden -

  1. Ausgewählte keine ist ein Handy oder Festnetznummer.

  2. Überprüfen Sie, ob die Zahl einen Ländercode hat.

Kann mir mit dem oben Validierungen jemand bitte helfen.

Veröffentlicht am 05/09/2019 um 06:40
vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Dies ist eine schwierige Frage, die ich glaube, es gibt keine richtige && gültige einzige Antwort :) Ich werde erklären, warum.

Lassen Sie uns Ihre erste Validierung nehmen, der Sie den Benutzer ausgewählten Kontakttelefonnummer ist ein Handy oder Festnetz identifizieren wollen. Derzeit wird iOS keine Option Anruf Bereitstellung von Festnetz . Die vorhandenen Optionen sind wie unten.

Geben Sie hier image description

Wie Sie im obigen Bild sehen können, können Sie die Telefonnummer hinzugefügt wird eine der oben genannten Kategorie erhalten. Wie können Sie von Code erreicht werden, dass als unten.

let phoneNumberType = userPhoneNumbers[0].label

Mit einem Schalter oder if-else-Anweisung, können Sie die Kategorie filtern. Als Beispiel

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

Die zweite Validierung, die Sie fragen, ist zu prüfen, ob die Zahl einen Ländercode hat. Schauen Sie sich die folgenden Debug-Ausgabe.

Geben Sie hier image description

Wie Sie sehen können, obwohl die reale Telefonnummer einen Ländercode von Neuseeland hat der Ländercode gibt Taste einen anderen, die ich bin nicht sicher , warum. Sie können die Telefonnummer extrahieren und Ihre eigene Validierungen (Ex. +, 00 ...) erstellen , aber es gibt mehrere Kombinationen , die Sie beachten müssen.

Nach all diesen Aufwand, wenn Sie Ihre Build App Store hochladen, gibt es die Möglichkeit von immer abgelehnt (es sei denn Sie eine gültige Argumente haben), da Sie persönliche Benutzerdaten zu extrahieren versuchen. Deshalb mein erster Satz gültig ist;)

Beantwortet am 05/09/2019 um 08:54
quelle vom benutzer

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