Como fazer uma pausa de áudio / currículo quando o iPhone está bloqueado / desbloqueado
-
09-09-2019 - |
Pergunta
Aqui está o que atualmente acontece na minha app:
Bloqueio: Bloqueio de iPhone botão pressionado -> Áudio pausado
Desbloquear: iPhoneUnlocked botão pressionado -> Audio Retomada -> Slide to Unlock -> App Aparece
Eu quero que a sequência de desbloqueio para ser:
Desbloqueio: iPhoneUnlock botão pressionado -> Slide to Unlock -> Audio Retomada -> App Aparece
Eu estou usando OS 2.2.1 e AVFoundation Framework, e aqui está o que eu já tentei:
-
Eu tentei usar applicationWillResignActive e applicationDidBecomeActive retornos de chamada do AppDelegate, ele não funciona. Embora applicationDidBecomeActive é chamado no momento correto (isto é quando o usuário tenha deslizado para desbloquear o dispositivo), o áudio fica retomado logo que o botão de desbloqueio é pressionado (acho que é por causa das sessões de áudio), então eu tentei:
-
Eu implementei audioPlayerBeginInterruption e audioPlayerEndInterruption seletores do AVAudioPlayerDelegate, parece que estes métodos nunca são chamados (eu coloquei chamadas de log). Eu estou certo que eu estou definindo o delegado corretamente desde audioPlayerDidFinishPlaying está corretamente chamado quando um arquivo de áudio tem jogo acabado.
P.S: Eu estou testando no dispositivo se isso não era óbvio
Solução
Eles, aparentemente, só são chamados quando uma sessão de áudio foi interrompido, que vai dizer se você estivesse jogando áudio e está sendo interrompido por outro áudio que solicita uma sessão ativa. Em suma: eles não são chamados quando o telefone fica inactivo, mas eles são chamados quando você recebe uma chamada, por exemplo. Mas, mesmo assim eles só são chamados quando o AVAudioPlayer estava ativo no momento. Eu ainda estou lutando com esse sistema de baixa qualidade ...
Outras dicas
abuso Ligeira do sistema, mas você pode observar as notificações de proteção de arquivos para saber quando o aparelho foi desbloqueado. Você poderia usar isso para decidir quando para reproduzir o áudio novamente.