trabado support solucion restaurar restauracion recuperacion queda puedo poner modo dfu botones apple actualizar iphone cocoa-touch xamarin.ios

support - poner iphone en modo dfu sin botones



¿Qué le sucede a una aplicación de iPhone cuando el iPhone entra en modo de espera? (6)

Consulte Interrupciones de la aplicación en la Guía de programación de iPhone OS , especialmente los eventos applicationWillResignActive y applicationDidBecomeActive . (Vale la pena leer toda la guía.) Cuando ignoras los eventos, el cronómetro parece continuar por un momento y luego se detiene. Suena lógico, la aplicación podría drenar fácilmente la batería si se mantiene funcionando. ¿Y qué ocurre exactamente con la aplicación? Supongo que simplemente no obtiene ningún tiempo de CPU, se congela y solo se descongela cuando enciendes la máquina nuevamente.

Mi aplicación usa NSTimer y parece que NSTimer no se dispara cuando el iPhone entra en el modo de espera (ya sea presionando el botón de hardware o el temporizador de inactividad).

Cuando activo nuevamente el iPhone, mi aplicación aún está en primer plano. ¿Qué sucede con las aplicaciones de terceros cuando el iPhone es el modo de espera?


Creo que su aplicación debería ejecutarse normalmente cuando se suspenda. (piense en Radio Pandora)

Comprueba si tu temporizador está siendo desasignado debido a que tu vista está oculta o se está produciendo algún otro evento.


Aunque no es evidente aquí, creo que el póster original encontró una respuesta a su pregunta al iniciar un hilo ( disponible aquí ) en los foros de desarrolladores de iPhone (que finalmente tuve que encontrar porque la información no se compartió aquí).

En caso de que alguien más tenga la misma pregunta y encuentre la página en el futuro, aquí hay una respuesta útil publicada por alguien en el foro de Apple llamado "eskimo1" (que he editado ligeramente para que sea más fácil de leer sin tener el contexto proporcionado por el hilo original completo):

  • Con respecto a la terminología del estado de la aplicación iPhone, "activo" no significa "despierto", significa "conectado a la GUI". Piense que es análogo a "frontmost" en Mac OS X. Cuando bloquea el dispositivo, su aplicación se desactiva pero el dispositivo puede o no irse a dormir.
  • iPhone OS rara vez duerme si el dispositivo está conectado a la alimentación principal (es decir, a través de USB). Sin embargo, puede dormir si funciona con batería.
  • Poco tiempo después de que la pantalla está bloqueada (20 segundos según Oliver Drobnik), el dispositivo duerme. Esto es como cerrar la tapa de su computadora portátil; toda la actividad en la CPU principal se detiene.
  • Esto no ocurre si el dispositivo está reproduciendo audio en la sesión de audio correcta. Vea DTS Q & A QA1626 "Sesión de audio - Asegurando que la reproducción de audio continúa cuando la pantalla está bloqueada" para más detalles.
  • Tenga en cuenta que la propiedad idleTimerDisabled (que se puede activar para evitar que la pantalla se apague mientras se ejecuta la aplicación) se trata de bloquear la pantalla después de la inactividad del usuario. No está directamente relacionado con el sueño del sistema (está indirectamente relacionado porque el sistema puede dormir poco después de que esté bloqueado).

Mi primer consejo es que no desactive el temporizador de inactividad, es solo un truco. Si desea mantener un temporizador activo durante los eventos de UI, ejecute el temporizador en el bucle de ejecución actual utilizando NSCommonModes:

// create timer and add it to the current run loop using common modes self.timer = [NSTimer timerWithTimeInterval:.1 target:self selector:@selector(handleTimer) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];


Usé la información en esta publicación para una pequeña muestra que estaba construyendo. Este es el código que utilicé cuando inicié la reproducción para evitar que el audio se detenga:

AudioSession.Category = AudioSessionCategory.MediaPlayback;

Y cuando la aplicación finaliza con la reproducción para restablecer el valor original:

AudioSession.Category = AudioSessionCategory.SoloAmbientSound;

La muestra completa está aquí:

http://github.com/migueldeicaza/monotouch-samples/tree/master/StreamingAudio/


Recientemente me enfrenté a este problema en una aplicación en la que estoy trabajando que usa varios temporizadores y reproduce algunas indicaciones de audio e hizo dos cambios relativamente simples:

  1. En AppDelegate implementé los siguientes métodos y su mera presencia permite que la aplicación continúe cuando la pantalla está bloqueada

    // this receives the notification when the device is locked - (void)applicationWillResignActive:(UIApplication *)application { } // this receives the notification that the application is about to become active again - (void)applicationWillBecomeActive:(NSNotification *)aNotification { }

    referencias: UIApplicationDelegate Protocol Reference y NSApplication Class Reference en el API doc (accesible a través de Xcode, solo busque applicationWillBecomeActive ).

  2. Hizo la clase viewcontroller principal un AVAudioPlayerDelegate y usé este código de la muestra "AddMusic" de Apple para hacer que las alertas de audio de la aplicación jugaran bien en el audio del iPod, etc ...

    Acabo de dejar caer este código en un método que se llama durante viewDidLoad. Si esto le interesa, debe ingresar en la categoría "¿Quién debería leer este documento?" Para esto: Guía de programación de sesiones de audio

    // Registers this class as the delegate of the audio session. [[AVAudioSession sharedInstance] setDelegate: self]; // The AmbientSound category allows application audio to mix with Media Player // audio. The category also indicates that application audio should stop playing // if the Ring/Siilent switch is set to "silent" or the screen locks. [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil]; // Activates the audio session. NSError *activationError = nil; [[AVAudioSession sharedInstance] setActive: YES error: &activationError];