Córdova tratando de marcar el número de teléfono

Estoy intentando marcar un número de teléfono en iOS, pero solo tengo el simulador y un iPod Touch para probar.

El código usa algo similar a:

window.location.href = 'tel:01234567890'; 

Funcionando bien con Android, pero en iOS muere con:

Error al cargar la página web con error: no se puede mostrar la URL.

Ahora, me doy count de que esto se ha preguntado antes, pero el consenso general de hace algún time fue "No funciona, necesitarás usar un complemento". Sin embargo, no ha habido muchas preguntas al respecto durante algún time, y qué preguntas parecen sugerir que funciona al hacerlo de forma programática (como en el caso anterior con window.location.href ). He probado el iOS PhoneDialer y la versión más reciente del mismo complemento, pero ambos tienen errores en XCode ( ARC forbids explicit message send of 'release' ), un poco molesto y puedo hacer que esto funcione, pero luego PhoneGap no funciona encuentra el complemento: realmente parece que estoy golpeando un muro de ladrillos con este método, y no puedo creer que algo tan simple como esto requiera algo así en la parte superior.

Sé que no puede marcar / llamar automáticamente a un número por razones de security, pero todo lo que necesito hacer es abrir el marcador con el número pre-poblado, que seguramente no es diferente a un mailto:info@example.com enlace mailto:info@example.com abriendo su número cliente de correo electrónico con el remitente previamente poblado?

Entonces, mis preguntas son:

  • ¿Ha cambiado esto con una actualización reciente de PhoneGap, iOS o XCode?
  • O bien, ¿es un caso que no puedo hacer esto en un iPod o simulador, y funcionará bien en un iPhone?
  • ¿Cómo puedo arreglarlo? 🙂

No especificó qué versión de cordova está utilizando, así que voy a asumir la versión> 3.

Asegúrese de que InAppBrowser , un complemento desde la versión 3, está instalado y luego abra el enlace llamándolo a través de Javascript así:

 window.open('tel:12345678', '_system') 

_system lo abrirá con el browser propio del sistema que a su vez abrirá el cuadro de dialog de llamadas, si lo usa contra http://maps.apple.com/ , se abrirá en la aplicación de maps y similar para otras aplicaciones que se abre para urls especiales .

Observaciones:

  • Como se describe en los documentos del complemento InAppBrowser, la function window.open no se configurará automáticamente. Tienes que hacerlo tú mismo: window.open = cordova.InAppBrowser.open; . En su lugar, puede usar directamente cordova.InAppBrowser.open('tel:12345678', '_system');
  • Asegúrate de que tu número no tenga espacios en blanco (el prefijo + está bien). Por ejemplo, podría usar una function como la siguiente, suponiendo que num es una cadena.

Función:

 function placeCall(num) { if (window.cordova) { cordova.InAppBrowser.open('tel:' + num.replace(/\s/g,''), '_system'); } } 

Abajo, el código funciona perfectamente bien para iPhone: –

window.open ('tel: 123456', '_sistema');

El simulador no es compatible con el marcador. No hay necesidad de perder el time.

Asegúrese de que el número de teléfono en su href tampoco tenga ningún formatting, ya que en iOS hace que el vínculo no funcione en una aplicación PhoneGap. Por ejemplo, use tel: 0390005555, y no tel: (03) 9000 5555.

No creo que este sea un problema de cordova. Sé que en iOS nativo no puedes abrir el marcador en el simulador o en un iPod touch. Deberá probar esto en un iPhone real.

Sé que este es un time de respuesta tardío.

Prueba añadiendo // a la url. Al igual que este tel://xxxxxxxxx y ver si funciona.

Trabajó para mí en IOS 8.4, iPhone 6, 6+ a partir de hoy.