Estado de fundo
O iOS oferece suporte à multitarefa para todos os aplicativos; no entanto, há algumas etapas que o desenvolvedor deve seguir para que o SDK do Vonage Video para iOS funcione corretamente nos diferentes estados do aplicativo. Este documento aborda um conjunto de práticas que, segundo nossa experiência, funcionam bem com a maioria dos aplicativos do Vonage Video. No entanto, ele não substitui a leitura do Documentação da Apple sobre o assunto — especificamente as seções sobre “Estratégias para lidar com transições de estado de aplicativos”, “Execução em segundo plano” e “Dicas para desenvolver um aplicativo de VoIP”. Embora a Apple não considere a maioria dos aplicativos Vonage Video como aplicativos de VoIP, o conteúdo sobre a configuração de sessões de áudio e de soquetes é relevante e útil para a compreensão deste documento.
Introdução rápida — como definir permissões de aplicativos
Para que o aplicativo continue gravando áudio em segundo plano, selecione o destino do aplicativo no Xcode e selecione o Signing & Capabilities guia. Em seguida, clique no botão + Funcionalidade e adicione a funcionalidade “Modos de fundo” ao projeto. Depois, selecione o Audio, Airplay, and Picture in Picture opção. Essa configuração também impedirá que o aplicativo entre em estado de suspensão enquanto estiver reproduzindo e gravando áudio em segundo plano.
Se o seu aplicativo precisar de notificações push de alta prioridade que ativem o aplicativo para chamadas recebidas, utilizando a interface do usuário do aplicativo nativo do telefone, ou que notifiquem sobre eventos de espera, selecione o Voice over IP recurso no XCode.
O que o Vonage Video pode (e não pode) fazer em segundo plano
Usando o SDK, um aplicativo pode executar cada uma das seguintes ações enquanto estiver no estado de segundo plano:
- Mantenha uma sessão ativa.
- Manter uma sessão apenas com áudio.
- Defina sinalizadores de áudio/vídeo para emissores e receptores. Por exemplo, ao definir o
OTPublisher.publishAudiopropriedade paraYESé permitido. - Publique usando uma implementação personalizada de captura de vídeo que não acesse a câmera (por exemplo, publicando a partir de um arquivo ou de uma fonte de vídeo sintetizado).
Um aplicativo pode retomar o uso da câmera assim que voltar ao estado ativo.
No entanto, os aplicativos não pode faça o seguinte enquanto estiver no estado de segundo plano:
- Use a câmera como fonte de vídeo para um editor.
- Configure novas visualizações com vídeos de transmissões.
- Mantenha uma sessão de áudio ativa caso receba uma ligação telefônica ou pelo FaceTime.
- Impedir que outros aplicativos acessem os recursos de áudio do sistema.
- Manter uma conexão com uma sessão sem um emissor ou assinante ativo.
Sessões ativas em segundo plano
A configuração descrita acima permite que os aplicativos mantenham uma sessão ativa mesmo quando estão em segundo plano, provavelmente porque o usuário final pressiona o botão “Home”, bloqueia a tela ou abre um conteúdo de URL em outro processo. O audio Essa permissão permite que o processo do aplicativo permaneça ativo enquanto estiver em segundo plano, caso haja uma sessão de áudio ativa. Isso significa que a captura e a reprodução de áudio podem continuar na sua sessão, desde que nenhum outro processo solicite recursos de áudio.
Quando configurado corretamente, o iOS exibe um indicador de que seu aplicativo está em execução em segundo plano com uma sessão de áudio ativa. Isso é visível por meio de um fundo vermelho na barra de status, bem como por uma barra adicional que indica o nome do aplicativo que mantém a sessão de áudio ativa — neste caso, o seu aplicativo.

O Voice over IP Essa funcionalidade destina-se a manter conexões de sinalização de longa duração com um servidor de aplicativos.
Se você selecionar o Voice over IP Se você selecionar essa opção na seção “Recursos” do Xcode, seu aplicativo deverá implementar funcionalidades que justifiquem esse recurso; caso contrário, a revisão da App Store poderá rejeitar seu aplicativo. Esse recurso não deve ser usado para manter o aplicativo em execução em segundo plano por motivos não relacionados a comunicações de áudio ou vídeo.
Se seu aplicativo precisar ser notificado sobre eventos do aplicativo, recomendamos usar Notificações Push da Apple com seu servidor de aplicativos para ativar o aplicativo e executar um fluxo de trabalho. Se o seu aplicativo processar chamadas recebidas, recomendamos usar o Notificações push de VoIP.
Perder o controle
Chamadas telefônicas e do FaceTime recebidas são provavelmente os primeiros eventos que você observará e que interromperão completamente o funcionamento do seu aplicativo. Quando isso acontecer, seu aplicativo será suspenso, independentemente de haver ou não uma sessão de áudio ativa.
Se seu aplicativo for suspenso porque a sessão de áudio cedeu prioridade a outro processo, não há necessidade de lógica adicional para lidar com isso. Se o aplicativo ficar suspenso por um longo período, a conexão com a sessão será encerrada. Outros clientes conectados à sessão receberão connectionDestroyed eventos relacionados à conexão do dispositivo, e será necessária uma eventual limpeza assim que o aplicativo sair do estado de suspensão. Desde que seu controlador esteja processando os eventos de erro e de desconexão delegados para a sessão, isso não deve ser diferente de um fluxo de trabalho de desconexão voluntária ou de qualquer outro tipo. Os clientes poderão se reconectar assim que a limpeza pós-desconexão for processada.