¿Las aplicaciones del iPhone tienen permiso para hacer llamadas sin la interacción del usuario?

9

Estaba leyendo sobre una estafa de llamadas perdidas justo ahora donde el usuario se cobra, incluso si no devuelve el número. Se me ocurrió que una aplicación de iPhone malintencionada podía hacer llamadas a números premium para estafar a los usuarios sin dinero, de hecho, parece que esto ha sucedido en el pasado.

Según Documentación propia de Apple :

  

Cuando un usuario toca un enlace telefónico en una página web, iOS muestra una alerta que pregunta si el usuario realmente quiere marcar el número de teléfono e inicia la marcación si el usuario acepta. Cuando un usuario abre una URL con el esquema de teléfono en una aplicación nativa, iOS no muestra una alerta e inicia la marcación sin más avisos al usuario.

Me parece que una aplicación de iPhone aparentemente benigna podría, por ejemplo, esperar hasta que el teléfono quedara a cargo (y, por lo tanto, probablemente no esté siendo atendido por el usuario) y luego iniciar una llamada a un número de tarifa superior para que el desarrollador se conecte. una bonificación ordenada. Parece que no hay ningún permiso en iOS que pueda cambiar para evitar este comportamiento, ya que esto abre la aplicación del teléfono con una URL en lugar de acceder a los datos del teléfono.

¿Alguien puede confirmar si mi entendimiento es correcto y, de ser así, por qué demonios Apple no ha cerrado un agujero tan enorme?

    
pregunta Cartroo 29.04.2016 - 08:51

2 respuestas

8

He comprobado experimentalmente el comportamiento de iOS al intentar iniciar una llamada telefónica desde una de mis aplicaciones.

Aquí están los resultados:

  • Es posible iniciar programáticamente una llamada telefónica sin la confirmación del usuario. Acabo de escribir una única línea de código que se ejecuta justo después de que se haya cargado la aplicación. Lo que significa que si su aplicación está en primer plano, puede iniciar una llamada en cualquier momento, incluso sin necesidad de que el usuario toque en cualquier lugar.
  • He enviado una notificación remota remota silenciosa a la aplicación para activarla si no se está ejecutando y luego ejecutar el mismo código. No se inició ninguna llamada; iOS no permite que una aplicación inicie una llamada telefónica si la aplicación se ejecuta en segundo plano.

Por lo tanto, responder a sus preguntas, la única forma de iniciar una llamada telefónica sin que el usuario se dé cuenta, es de alguna manera convencer al usuario de que deje la aplicación maliciosa en ejecución en primer plano y luego iniciar la llamada, ya que iOS no Permite esta operación si la aplicación está en segundo plano.

Actualmente, iOS no proporciona ningún mecanismo para bloquear el inicio de llamadas telefónicas desde una aplicación en particular, pero solo puede suceder si la aplicación está en primer plano.

    
respondido por el tomacco 29.04.2016 - 14:36
4

He hecho una aplicación de prueba para comprobar esto. La aplicación puede abrir una URL como tel://123456789 solo cuando está en primer plano y activa. Cuando llamo a este código incluso después de ingresar el estado de fondo, la API para abrir esta URL no hizo nada. Entonces, para responder a su pregunta, las aplicaciones no podrán hacer una llamada sin su conocimiento.

Para probar esto, pega esto en tu AppDelegate :

- (void)applicationDidEnterBackground:(UIApplication *)application {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
}
    
respondido por el Mateusz Szlosek 29.04.2016 - 13:33

Lea otras preguntas en las etiquetas