2011-12-19 10 views
5

que estoy tratando de construir una aplicación de alarma que puede disparar una alarma mientras está en modo de pantalla bloqueada (la aplicación está en primer plano, pero la pantalla está bloqueada). La alarma debe ser activada por un NSTimer no por uilocalnotification.iOS 5 de prevención de sueño profundo

En iOS 4 que utiliza el 'reproducir sonido en silencio cada 10 segundos' truco para evitar que la aplicación de ir al sueño profundo y los eventos del temporizador trabajado bien. Sin embargo, en iOS 5 esto no parece funcionar.

¿Alguna idea? O esto debería funcionar y estoy haciendo algo mal?

+0

Peter, ¿está utilizando https://github.com/marcop/iPhoneInsomnia con el volumen ajustado a 0,1? –

+0

como base, sí. Hubo algunos problemas con el código sin embargo, así que he cambiado algunas cosas. –

+0

¿Recuerdas los cambios que hiciste? –

Respuesta

4

Parece que en realidad se puede utilizar el 'reproducir el audio en silencio' hackear en iOS 5, pero el audio tiene que ser audible lo que significa que no se puede jugar al volumen ajustado a 0.0 .

+0

¿Entonces el volumen 0.1 es aceptable cuando lo envía? – Gon

2

Es probablemente una solución sucia, pero en el pasado he utilizado el sensor de proximidad para apagar la pantalla en lugar de bloquear el teléfono. Simplemente coloque el teléfono boca abajo y la pantalla se apagará solo.

[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; 

Esto le permitirá mantener un control total sobre el dispositivo, mientras que la pantalla se apaga.

+0

Esta es una idea interesante. No es realmente lo que estoy buscando, pero útil, no obstante. –

+0

¡Me gusta! ¿La aplicación nunca pasará al modo de pantalla bloqueada con esta técnica? – jimmystormig

+0

No, nunca. Es lo que algunas otras aplicaciones usan también. Tenga en cuenta que la batería aún se drena, por lo que eventualmente el teléfono pasará al estado "bloqueado". ;-) –

4

Puede usar github.com/marcop/iPhoneInsomnia y establecer el volumen a más de 0, pero aún no funciona porque el archivo de sonido es tan corto que el sistema mata su aplicación antes de que se active el temporizador y se reproduzca El sonido. Lo resolví estableciendo el numberOfLoops del audioPlayer en -1 (repetición infinita). Entonces debería funcionar.

Y también se debe establecer la clave de plist UIBackgroundMode a una matriz de una cadena denominada "audio"