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.publishAudio propriedade para YES é 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.