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

Με ένα διακόπτη ή αν-else, μπορείτε να φιλτράρετε την κατηγορία. Ως παράδειγμα

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

Η δεύτερη επικύρωση που ζητούν είναι να ελέγξετε αν ο αριθμός έχει έναν κωδικό χώρας. Κοιτάξτε την παρακάτω εξόδου εντοπισμού σφαλμάτων.

εισάγετε περιγραφή της εικόνας εδώ

Όπως μπορείτε να δείτε, ακόμη και αν ο πραγματικός αριθμός τηλεφώνου έχει κωδικό χώρας της Νέας Ζηλανδίας, το countryCode κλειδί δίνει μια διαφορετική, το οποίο δεν είμαι σίγουρος γιατί. Μπορείτε να εξαγάγετε τον αριθμό τηλεφώνου και να δημιουργήσετε τα δικά σας επικυρώσεις (Ex. +, 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