vincular una tres telefonica simultaneas puedo pueden porque personas llamadas llamada intercambiar hacer enlazar enlazadas cómo conferencia como ios swift swift3 ios10 phone-call

ios - una - porque no puedo hacer conferencia de llamadas



¿Cómo hacer una llamada telefónica en iOS 10 usando Swift? (6)

Esta pregunta ya tiene una respuesta aquí:

Quiero que mi aplicación pueda llamar a un número determinado cuando se hace clic en un botón. Intenté buscarlo en Google, pero hasta ahora no parece tener uno para iOS 10 (donde se ha ido openURL). ¿Alguien puede darme un ejemplo sobre cómo hacerlo? Por ejemplo como:

@IBAction func callPoliceButton(_ sender: UIButton) { // Call the local Police department }


Actualizado para Swift 3:

se usa debajo de líneas de código simples, si desea hacer una llamada telefónica:

// definición de función:

func makeAPhoneCall() { let url: NSURL = URL(string: "TEL://1234567890")! as NSURL UIApplication.shared.open(url as URL, options: [:], completionHandler: nil) }

// llamada a la función: [Utilizado en cualquier parte de su código]

self.makeAPhoneCall()

Nota: ejecute la aplicación en un dispositivo real porque no funcionará en el simulador.


Tarea

Hacer una llamada con validación de número de teléfono

Detalles

Probado en:

  • Xcode 9.2, Swift 4
  • Xcode 10.2 (10E125), Swift 5

Solución

extension String { func extractAll(type: NSTextCheckingResult.CheckingType) -> [NSTextCheckingResult] { var result = [NSTextCheckingResult]() do { let detector = try NSDataDetector(types: type.rawValue) result = detector.matches(in: self, range: NSRange(startIndex..., in: self)) } catch { print("ERROR: /(error)") } return result } func to(type: NSTextCheckingResult.CheckingType) -> String? { let phones = extractAll(type: type).compactMap { $0.phoneNumber } switch phones.count { case 0: return nil case 1: return phones.first default: print("ERROR: Detected several phone numbers"); return nil } } func onlyDigits() -> String { let filtredUnicodeScalars = unicodeScalars.filter{CharacterSet.decimalDigits.contains($0)} return String(String.UnicodeScalarView(filtredUnicodeScalars)) } func makeAColl() { guard let number = to(type: .phoneNumber), let url = URL(string: "tel:///(number.onlyDigits())"), UIApplication.shared.canOpenURL(url) else { return } if #available(iOS 10, *) { UIApplication.shared.open(url) } else { UIApplication.shared.openURL(url) } } }

Uso

"+1-(800)-123-4567".makeAColl()

"phone:+1(617)111-22-33!".makeAColl() // Will extract "+1(617)111-22-33" and make a call

let text = "blabla, +1(222)333-44-55, dasdwedsczx acscas 123-89-01" let phones = text.extractAll(type: .phoneNumber).compactMap { $0.phoneNumber } print(phones)

Muestra completa

func test() { isPhone("blabla") isPhone("+1(222)333-44-55") isPhone("+42 555.123.4567") isPhone("+1-(800)-123-4567") isPhone("+7 555 1234567") isPhone("+7(926)1234567") isPhone("(926) 1234567") isPhone("+79261234567") isPhone("926 1234567") isPhone("9261234567") isPhone("1234567") isPhone("123-4567") isPhone("123-89-01") isPhone("495 1234567") isPhone("469 123 45 67") isPhone("8 (926) 1234567") isPhone("89261234567") isPhone("926.123.4567") isPhone("415-555-1234") isPhone("650-555-2345") isPhone("(416)555-3456") isPhone("202 555 4567") isPhone("4035555678") isPhone(" 1 416 555 9292") isPhone("+44 1838 300284") isPhone("+44 1838 300284, 1 416 555 9292") } private func isPhone(_ string: String) { let result = string.to(type: .phoneNumber) != nil print("/(result ? "✅" : "❌") /(string) | /(string.onlyDigits()) | /(result ? "[a phone number]" : "[not a phone number]")") }

Resultado

❌ blabla | | [not a phone number] ✅ +1(222)333-44-55 | 12223334455 | [a phone number] ✅ +42 555.123.4567 | 425551234567 | [a phone number] ✅ +1-(800)-123-4567 | 18001234567 | [a phone number] ✅ +7 555 1234567 | 75551234567 | [a phone number] ✅ +7(926)1234567 | 79261234567 | [a phone number] ✅ (926) 1234567 | 9261234567 | [a phone number] ✅ +79261234567 | 79261234567 | [a phone number] ✅ 926 1234567 | 9261234567 | [a phone number] ✅ 9261234567 | 9261234567 | [a phone number] ✅ 1234567 | 1234567 | [a phone number] ✅ 123-4567 | 1234567 | [a phone number] ✅ 123-89-01 | 1238901 | [a phone number] ✅ 495 1234567 | 4951234567 | [a phone number] ✅ 469 123 45 67 | 4691234567 | [a phone number] ✅ 8 (926) 1234567 | 89261234567 | [a phone number] ✅ 89261234567 | 89261234567 | [a phone number] ✅ 926.123.4567 | 9261234567 | [a phone number] ✅ 415-555-1234 | 4155551234 | [a phone number] ✅ 650-555-2345 | 6505552345 | [a phone number] ✅ (416)555-3456 | 4165553456 | [a phone number] ✅ 202 555 4567 | 2025554567 | [a phone number] ✅ 4035555678 | 4035555678 | [a phone number] ✅ 1 416 555 9292 | 14165559292 | [a phone number] ✅ +44 1838 300284 | 441838300284 | [a phone number] ERROR: Detected several phone numbers ❌ +44 1838 300284, 1 416 555 9292 | 44183830028414165559292 | [not a phone number] ["+1(222)333-44-55", "123-89-01"]


En Swift 4.2

func dialNumber(number : String) { if let url = URL(string: "tel:///(number)"), UIApplication.shared.canOpenURL(url) { if #available(iOS 10, *) { UIApplication.shared.open(url, options: [:], completionHandler:nil) } else { UIApplication.shared.openURL(url) } } else { // add error message here } }

Llama a esto como a continuación

dialNumber(number: "+921111111222")

Espero que esto ayude.


Por error, mi respuesta se extravió, compruebe esta: Puede usar esto:

guard let url = URL(string: "tel:///(yourNumber)") else { return //be safe } if #available(iOS 10.0, *) { UIApplication.shared.open(url) } else { UIApplication.shared.openURL(url) }

Necesitamos verificar si estamos en iOS 10 o posterior, ya que ''openURL'' quedó en desuso en iOS 10.0


Puedes llamar así:

if let url = URL(string: "tel:///(number)") { UIApplication.shared.openURL(url) }

Para Swift 3+ , puedes usar como

guard let number = URL(string: "tel://" + number) else { return } UIApplication.shared.open(number) OR UIApplication.shared.open(number, options: [:], completionHandler: nil)

Asegúrese de haber borrado la cadena de su número de teléfono para eliminar cualquier instancia de ( , ) , - o space .


if let phoneCallURL:URL = URL(string: "tel:/(strPhoneNumber)") { let application:UIApplication = UIApplication.shared if (application.canOpenURL(phoneCallURL)) { let alertController = UIAlertController(title: "MyApp", message: "Are you sure you want to call /n/(self.strPhoneNumber)?", preferredStyle: .alert) let yesPressed = UIAlertAction(title: "Yes", style: .default, handler: { (action) in application.openURL(phoneCallURL) }) let noPressed = UIAlertAction(title: "No", style: .default, handler: { (action) in }) alertController.addAction(yesPressed) alertController.addAction(noPressed) present(alertController, animated: true, completion: nil) } }