2012-05-17 21 views
7

Estamos en el proceso de escribir una aplicación para iPhone (que estará en segundo plano) que recibiría una notificación cuando recibiera una llamada entrante. La aplicación realiza algunos trabajos de fondo: va a un servidor que recupera algunos datos mientras la sesión telefónica está en curso y luego lo notifica al usuario.aplicación iPhone de fondo para actualizar la pantalla cuando se recibe una llamada telefónica

Después de buscar, descubrí que puedo usar el Private Telephony Headers/Framework para saber quién está llamando en mi aplicación. Sin embargo, no puedo actualizar la pantalla del marcador con la información recuperada del servidor. También descubrí que la aplicación debe estar ejecutándose cuando llega la llamada telefónica. ¡¡Yak!!

sé que esto no será aprobada en la tienda de Apple, sin embargo Busco 2 cosas:

  1. ? ¿Cómo pongo esta aplicación en el fondo.
  2. ¿Cómo muestro algo de información mientras la llamada está en curso? La notificación local está bien, pero debe mostrarse de inmediato.

Incluso si tenemos que jailbreak, me gustaría saber cómo hacer esto. Esta aplicación es para funcionarios encargados de hacer cumplir la ley, prueba de concepto.

+1

Si quiere hacer este tipo de aplicaciones de manera adecuada, necesitará hacer jailbreak, porque creo que la mejor solución sería un daemon de fondo que realice el trabajo pesado y luego la inyección de código en SpringBoard para mostrar la información. No hay tutoriales reales sobre cómo hacer cosas como esa, sin embargo, los desarrolladores que están en la escena de jailbreak tienen experiencia con respecto a estos asuntos y, a veces, trabajan independientemente. – YllierDev

+0

Básicamente estoy buscando la inyección de código en el tablero de primavera para que la información sensible para los funcionarios encargados de hacer cumplir la ley se muestre de inmediato y estén mejor informados mientras se realiza la llamada. Si Apple dice que evita tales cambios para la experiencia del Usuario o la Privacidad/Seguridad, diría que no lo han diseñado mejor y están asustados ... y que solo se esconden detrás de estas excusas. –

+0

Si quieres probarlo tú mismo, MobileSubstrate (http://iphonedevwiki.net/index.php/MobileSubstrate) es la herramienta para usar para la inyección de código en dispositivos con jailbreak. Entiendo que Apple no quiera abrir el sistema amplio a los desarrolladores. Los "ajustes" de los desarrolladores sin experiencia pueden causar estragos graves y el iPhone se entiende como un producto en masa de bajo mantenimiento. Sin embargo, eso no me ha impedido retocar y mejorar el sistema;) – YllierDev

Respuesta

3

Como dijo YllierDev, podría consultar un ajuste de MobileSubstrate para mostrar la información. Pero, por algo que es quizá un poco menos desalentadora para alguien nuevo, puede probar esto:

  1. primer lugar, crear un demonio lanzamiento. Esto puede ejecutarse en segundo plano y hacer lo que quieras. Se iniciará cuando el teléfono arranque, por lo que el usuario no necesita ejecutar primero ninguna aplicación, y luego ponerlo en segundo plano. Encontré this to be a good example of building a LaunchDaemon

  2. Parece que ya sabe cómo usar las funciones no documentadas del marco de Core Telephony para recibir notificaciones de una nueva llamada. Esta será la responsabilidad de tu demonio. Para completar, see this answer, o this other answer sobre cómo el daemon puede escuchar llamadas con notificaciones de Darwin.

  3. Cuando se intercepta la llamada, su daemon puede contactar a su servidor.

  4. A continuación, puede crear una ventana emergente sencillo con something like this:

CFOptionFlags responseFlags = 0; 
CFUserNotificationDisplayAlert(20.0, 3, NULL, NULL, NULL, 
    CFSTR("Hello"), CFSTR("Hello World"), CFSTR("OK"), 
    NULL, NULL, &responseFlags); 

He aquí algunos Apple docs on CFUserNotifications

Es probable que tenga para enlazar con la marco CoreFoundation, y tal vez include this header en su proyecto, para CFUserNotificationDisplayAlert() para estar disponible.

Pero eso debería darle una ventana emergente con sus datos dinámicos de llamadas.

Cuestiones relacionadas