walidacja CNContactPickerViewController dla numeru telefonu w iOS Swift

głosy
20

Użyłem CNContactPickerViewController aby umożliwić użytkownikowi wybrać kontakt z listy kontaktów przechowywanych w telefonie. Używam nazwę kontaktu i numer przy użyciu metod delegata CNContactPicker. Kod jak poniżej

    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
}

Chciałbym zastosować walidacji po walidacji do niego -

  1. Nie wybrano to telefon stacjonarny lub numer telefonu komórkowego.

  2. Sprawdź, czy numer ma kod kraju.

Czy ktoś mógłby mi pomóc z powyższych walidacji.

Utwórz 05/09/2019 o 06:40
użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

To jest trudne pytanie, które wierzę, nie ma prawidłowe && ważny jednej odpowiedzi :) wytłumaczę dlaczego.

Weźmy pierwszy walidacji, który chcesz zidentyfikować numer telefonu wybranego kontaktu użytkownik jest telefon komórkowy lub stacjonarny. Obecnie iOS nie jest zapewnienie połączenia opcja stacjonarnego . Istniejące opcje są jak poniżej.

wprowadzić opis obrazu tutaj

Jak widać na powyższym zdjęciu, można uzyskać numer telefonu zostanie dodany do żadnej z powyższych kategorii. W jaki sposób można to osiągnąć z kodu jest jak poniżej.

let phoneNumberType = userPhoneNumbers[0].label

Z przełącznikiem lub if-else można filtrować kategorię. Jako przykład

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

Drugi walidacja że prosicie jest sprawdzenie, czy numer ma kod kraju. Spójrz na poniższy wyjście debugowania.

wprowadzić opis obrazu tutaj

Jak widać, mimo że numer telefonu ma prawdziwy kod kraju Nowej Zelandii countryCode klucz daje inny, który nie jestem pewien dlaczego. Można wyodrębnić numer telefonu i tworzyć własne walidacji (np. +, 00 ...), ale istnieje kilka kombinacji, które trzeba rozważyć.

Po tych wszystkich wysiłków, jeśli przesłać build do sklepu App istnieje możliwość uzyskania odrzucone (chyba że masz ważny argumenty), gdyż staramy się wydobyć informacje osobiste użytkownika. Dlatego mój pierwszy zdanie jest ważne;)

Odpowiedział 05/09/2019 o 08:54
źródło użytkownik

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