la validación de CNContactPickerViewController número de móvil en iOS Swift

votos
20

He utilizado CNContactPickerViewController para permitir al usuario para elegir un contacto de su lista de contactos almacenados en el teléfono. Yo uso el nombre de contacto y el número de delegados utilizando métodos CNContactPicker. Código de la siguiente

    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
}

Me gustaría aplicar validaciones siguientes validaciones a ella -

  1. no seleccionado es un número de teléfono fijo o móvil móvil.

  2. Compruebe si el número tiene un código de país.

Por favor alguien puede ayudar con las validaciones anteriores.

Publicado el 05/09/2019 a las 06:40
por usuario
En otros idiomas...                            


1 respuestas

votos
1

Esta es una pregunta difícil que yo creo que no hay una correcta && válida una única respuesta :) Voy a explicar por qué.

Vamos a tomar su primera validación, que desea identificar el número de teléfono del usuario del contacto seleccionado es un teléfono móvil o fijo. En la actualidad, el IOS no está proporcionando una opción llamada de teléfono fijo . Las opciones existentes son como a continuación.

introducir descripción de la imagen aquí

Como se puede ver en la imagen anterior, se puede obtener se añade el número de teléfono a cualquiera de la categoría anterior. ¿Cómo se puede lograr que a partir de código es como sigue.

let phoneNumberType = userPhoneNumbers[0].label

Con un interruptor o si-else, puede filtrar la categoría. Como ejemplo

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

La segunda validación de que usted está pidiendo es comprobar si el número tiene un código de país. Mira el siguiente resultado de la depuración.

introducir descripción de la imagen aquí

Como se puede ver, a pesar de que el número de teléfono real tiene un código de país de Nueva Zelanda, el countryCode clave da una diferente, que no estoy seguro de por qué. Puede extraer el número de teléfono y crear sus propias validaciones (Ej. +, 00 ...), pero hay varias combinaciones que usted necesita considerar.

Después de todos estos esfuerzos, si está cargando su construcción a la App Store, no hay posibilidad de ser rechazado (a menos que tenga unos argumentos válidos), ya que está intentando extraer la información personal del usuario. Por eso mi primera frase es válida;)

Respondida el 05/09/2019 a las 08:54
fuente por usuario

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