2009-10-07 31 views
6

Hay ciertas partes de mi aplicación que sería mejor destacar para el usuario si están en el teléfono.¿Hay alguna manera de saber si su aplicación se está utilizando mientras el usuario está en el teléfono?

¿Hay una llamada para ver si estamos en el teléfono? Desafortunadamente, "llamar" es una palabra horrible para verificar en los documentos API por razones obvias.

+0

Aquí está el escenario. Bob recibe una llamada de Jill. Bob no está usando mi aplicación cuando ocurre la llamada. Jill solicita información de bob almacenada en mi aplicación. Bob, mientras está en el teléfono, presiona el botón de inicio y luego ejecuta mi aplicación. En este punto, quiero detectar que Bob está hablando por teléfono o que Bob solo está ejecutando la aplicación mientras no está en el teléfono. No me preocupan las llamadas entrantes mientras se ejecuta la aplicación – Michael

+0

Preguntas geniales. Me gustaría saber también – Jordan

Respuesta

2

El CoreTelephony Framework puede decirle.

El método CTCallCenter currentCalls devuelve un conjunto de llamadas celulares actualmente activas.

0

Cuando el iPhone recibe una llamada, la aplicación se cierra. Puede registrar una devolución de llamada para manejar este evento con gracia, ver:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/applicationWillTerminate:

Después de que la llamada haya terminado, su solicitud será re-lanzamiento.

Las aplicaciones que aparecen para preservar su estado durante una llamada se acaba de escribir bien :)


Arggh! Acabo de leer tu pregunta real.

No puedo encontrar, ni sé de ninguna API para acceder a la aplicación del teléfono. Mi único consejo sería que Phone es una aplicación como cualquier otra, y puede publicar información a través del túnel http que proporcionan todas las aplicaciones.

Me pregunto si solo podría tener un botón "Estoy al teléfono" que el usuario podría presionar para obtener los mismos resultados.

2

La aplicación no sale cuando entra una llamada, pasa a un estado inactivo. El siguiente método debe ser llamado en la UIApplicationDelegate:

- (void)applicationWillResignActive:(UIApplication *)application 

Este método también es llamado en otros casos, por ejemplo cuando el iPhone está bloqueado, y no hay manera de determinar si se trataba de una llamada telefónica entrante que causó eso.

5

Eche un vistazo a la diferencia de tamaño entre [[UIScreen mainScreen] bounds] y [[UIScreen mainScreen] applicationFrame]. Si el diferencial es de 20 píxeles y no está ocultando la barra de estado, entonces los usuarios probablemente no estén en una llamada. Si la diferencia es de 40 píxeles, es probable que los usuarios estén realizando una llamada, ya que la brillante barra de estado verde que aparece durante las llamadas es aproximadamente dos veces más grande que la barra de estado normal.

No he hecho esto antes, entonces YMMV. ¡Buena suerte y avísame si funciona!

+3

He pensado que esta es la respuesta, pero el tethering hace lo mismo ...: O ( – Michael

Cuestiones relacionadas