Cache de aplicativo para seu aplicativo de guia

O cache de aplicativo melhora o tempo de lançamento subsequente dos aplicativos no Teams, permitindo que você mantenha alguns recursos e ativos na memória que você pode usar ao reidratar seu aplicativo.

Há suporte para cache de aplicativo para o seguinte:

Escopo   Área de trabalho iOS Android
  Com suporte
Disponível apenas na versão prévia do desenvolvedor público
Com suporte Com suporte
Personal ✔️ Tempo de vida do cache: 30 minutos ✔️
Chat ✔️ Tempo de vida do cache: 30 minutos ✔️
Canal ✔️ Tempo de vida do cache: 30 minutos ✔️
Guia reunião ✔️ Tempo de vida do cache: 30 minutos ✔️
Painel lateral da reunião ou aplicativos de reunião ✔️ Tempo de vida do cache: 20 minutos

Habilitar o cache do aplicativo

Para habilitar o cache do aplicativo, siga as etapas:

  1. Chamadas teamsCore.registerBeforeUnloadHandler e teamsCore.registerOnLoadHandler APIs.

  2. Use contentUrl e entityId passe para o manipulador de carga para rotear para a página correta em seu aplicativo e invocar notifySuccess ou notifyFailure notificar o cliente do Teams de que o fluxo de inicialização do aplicativo está concluído.

    • contentUrl: Adicionar URL da página de conteúdo.
    • entityId: adicionar um identificador exclusivo.
  3. Disponha os recursos e execute qualquer limpeza necessária no manipulador e, em beforeUnload seguida, invoque o readyToUnload retorno de chamada para notificar o cliente do Teams de que o fluxo de descarregamento do aplicativo está concluído.

A seguir está o diagrama de fluxo do primeiro lançamento de um aplicativo que deseja optar pelo cache do aplicativo (registre o load ou beforeUnload no primeiro lançamento do aplicativo):

A captura de tela mostra o fluxo do primeiro lançamento do aplicativo no painel lateral da reunião.

A seguir está o diagrama de fluxo do lançamento do aplicativo armazenado em cache:

A captura de tela mostra o fluxo do lançamento armazenado em cache do aplicativo no painel lateral da reunião.

Quando você opta pelo cache do aplicativo, a visão web usada para hospedar o aplicativo inserido é reutilizado à medida que os usuários navegam para diferentes instâncias do aplicativo em uma janela. A visão da Web usada para hospedar o aplicativo fica oculta quando os usuários deixam o aplicativo e é mostrada quando os usuários retornam ao aplicativo.

Observação

Se o cache do aplicativo não estiver habilitado, a visão da Web será recriada sempre que o usuário iniciar o aplicativo.

Há vários motivos para um aplicativo não ser armazenado em cache ou para um aplicativo ser removido do cache, alguns dos motivos são (os números aqui estão sujeitos a alterações):

  • Se a carga de memória do sistema for alta, o aplicativo será removido do cache.
  • Se o número de aplicativos armazenados em cache exceder o tamanho máximo do cache, o aplicativo armazenado em cache mais antigo será removido do cache.
  • O aplicativo não será armazenado em cache se o Teams não receber o readyToUnload sinal do aplicativo dentro de 30 segundos após o envio da beforeUnload notificação.
  • O cache do aplicativo será desabilitado se a memória do sistema for menor que 4 GB ou se a memória disponível for menor que 1 GB no Windows ou 512 MB no Mac.
  • Painel lateral é o único quadro com suporteContext para cache de aplicativo em reuniões.
  • Não há suporte para cache de aplicativo para reuniões em que a contagem de usuários convidados é superior a 20.
  • Se um aplicativo não for carregado, o aplicativo não será armazenado em cache.
  • No iOS, quando o aplicativo Teams é encerrado, o aplicativo é removido do cache.

Exemplo de código

O snippet de código a seguir é um exemplo de teamsCore.registerOnLoadHandler e teamsCore.registerBeforeUnloadHandler APIs:

microsoftTeams.teamsCore.registerOnLoadHandler((data) => {
    console.log("got load from TEAMS", data.contentUrl, data.entityId);
    // use contentUrl to route to correct page 
    // invoke notifySuccess when ready  
    app.notifySuccess();
});
microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload) => {
    // dispose resources and then invoke readyToUnload
    readyToUnload();
    return true;
});

Práticas recomendadas

É recomendável implementar recursos de trabalho de armazenamento web ou serviço para armazenar os dados ou a exibição da Web localmente no iOS e no Android. Isso ajuda a carregar o aplicativo mais rapidamente em lançamentos subsequentes.

Limitações

Veja a seguir as limitações para o cache do aplicativo:

  • Aplicativos de página única que usam o roteamento do lado do cliente para navegação de página podem se beneficiar do cache do aplicativo. É recomendável que o mesmo domínio seja usado em todos os contextos do lançamento do aplicativo.

  • Os aplicativos precisam se registrar novamente para eventos como themeChange, focusEntere assim por diante, no manipulador de carga. O cliente do Teams não enviará notificações ao aplicativo quando armazenado em cache. Se seu aplicativo exigir notificações mesmo quando armazenado em cache, o cache pode não ser a solução certa.

  • O cache de aplicativo só tem suporte no cliente da área de trabalho do Teams. No cliente Web do Teams, mesmo que o aplicativo registre manipuladores de carga, o aplicativo será removido do cache após a conclusão da unload sequência.

  • Registre os load manipuladores e beforeUnload no início da sequência de inicialização. Se o cliente do Teams não vir esses registros antes de o usuário deixar o aplicativo, o aplicativo não será armazenado em cache.

  • O cliente do Teams invoca o loadHandler único após a unload conclusão da sequência do aplicativo. Por exemplo, se um usuário iniciar a guia A do aplicativo e iniciar a guia B do mesmo aplicativo, a guia B não receberá o sinal de carga até que a guia A invoque o retorno de readyToUnload chamada.

  • Os aplicativos são armazenados em cache por janela. O cache do aplicativo acontece em uma base por aplicativo (não por guia) na mesma janela.

  • Não há suporte para cache de aplicativo para o estágio de reunião ou caixa de diálogo (chamado de módulo de tarefa em contextos teamsJS v1.x), pois eles podem ser abertos na parte superior da guia e a mesma visão da Web não pode ser usada para renderizar o conteúdo na guia e na caixa de diálogo.

  • Registre apenas o beforeUnload manipulador se seu aplicativo não exigir cache de aplicativo, mas precisar de tempo para salvar o estado com segurança (pois sair do aplicativo pode fazer com que o conteúdo do aplicativo seja removido abruptamente do DOM (Modelo de Objeto de Documento)). Se o aplicativo não tiver se registrado para o load evento, ele será removido do DOM após a conclusão do unload fluxo.

  • Siga as diretrizes nesta seção para integrar seu aplicativo ao cache do aplicativo na reunião do Teams. Para suporte ao cache de aplicativo somente em reuniões, registre os load manipuladores ou beforeUnload se o contexto for sidePanel.

  • Espera-se que os aplicativos durmam quando armazenados em cache (usem recursos mínimos de computação ou rede e minimizem solicitações de SDK). Todos os manipuladores de registro e as seguintes solicitações de SDK são permitidos quando o aplicativo é armazenado em cache:

    • initialize
    • notifyappLoaded
    • notifySuccess
    • notifyFailure
    • notifyExpectedFailure
    • getContext
    • getAuthToken
    • readyToUnload
    • getConfig/getSettings
  • Não há suporte para cache de aplicativo no novo cliente do Teams.

Solução de problemas

Os aplicativos não estão sendo armazenados em cache? Por que o manipulador de carga não é invocado na navegação subsequente?

  • Verifique se as restrições de memória disponíveis e do sistema são atendidas.

  • Reduza a pegada de memória quando armazenado em cache. Use o beforeUnload manipulador para descartar recursos, por exemplo, liberar referências e remover ouvintes de eventos que podem não ser necessários quando armazenados em cache.

Exemplo de código

Nome do exemplo Descrição Node.js
Cache de aplicativo Aplicativo de exemplo para mostrar como o cache do aplicativo funciona no painel lateral da reunião. Exibir

Confira também