Partilhar via


Colocação em cache de aplicações para a sua aplicação de separador

A colocação em cache de aplicações melhora a hora de lançamento subsequente das aplicações no Teams, permitindo-lhe manter alguns recursos e recursos na memória que pode utilizar ao reidratar a sua aplicação.

A colocação em cache de aplicações é suportada para o seguinte:

Escopo   Área de trabalho iOS Android
Personal ✔️ Duração da cache: 30 minutos ✔️
Chat ✔️ Duração da cache: 30 minutos ✔️
Canal ✔️ Duração da cache: 30 minutos ✔️
Separador Reunião ✔️ Duração da cache: 30 minutos ✔️
Painel lateral da reunião ou aplicações em reunião ✔️ Duração da cache: 20 minutos

Ativar a colocação em cache de aplicações

Para ativar a colocação em cache de aplicações, siga os passos:

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

  2. Utilize contentUrl e entityId transmita para o processador de carga para encaminhar para a página correta na sua aplicação e invocar notifySuccess ou notifyFailure notificar o cliente do Teams de que o fluxo de inicialização da aplicação está concluído.

    • contentUrl: adicionar URL da página de conteúdo.
    • entityId: adicione um identificador exclusivo.
  3. Elimine os recursos e efetue qualquer limpeza necessária no processador e, em beforeUnload seguida, invoque a chamada de retorno para notificar o readyToUnload cliente do Teams de que o fluxo de descarregamento da aplicação está concluído.

Segue-se o diagrama de fluxo da primeira iniciação de uma aplicação que pretende optar pela colocação em cache de aplicações (registe o load ou beforeUnload no primeiro lançamento da aplicação):

Captura de ecrã a mostrar o fluxo da primeira iniciação da aplicação no painel do lado da reunião.

Segue-se o diagrama de fluxo do lançamento da aplicação em cache:

Captura de ecrã a mostrar o fluxo da iniciação em cache da aplicação no painel do lado da reunião.

Quando opta pela colocação em cache de aplicações, o iframe ou webview utilizado para alojar a aplicação incorporada é reutilizado à medida que os utilizadores navegam para diferentes instâncias da aplicação dentro de uma janela. O iframe ou webview utilizado para alojar a aplicação é ocultado quando os utilizadores saem da aplicação e são apresentados quando os utilizadores regressam à aplicação.

Observação

Se a colocação em cache da aplicação não estiver ativada, a iframe ou a webview é recriada sempre que o utilizador iniciar a aplicação.

Existem vários motivos para uma aplicação não ser colocada em cache ou para que uma aplicação seja removida da 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 elevada, a aplicação será removida da cache.
  • Se o número de aplicações em cache exceder o tamanho máximo da cache, a aplicação em cache mais antiga será removida da cache.
  • A aplicação não será colocada em cache se o Teams não receber o readyToUnload sinal da aplicação no prazo de 30 segundos após o envio da beforeUnload notificação.
  • A colocação em cache de aplicações está desativada se a memória do sistema for inferior a 4 GB ou se a memória disponível for inferior a 1 GB no Windows ou 512 MB no Mac.
  • O painel lateral é o único frameContext suportado para colocação em cache de aplicações em reuniões.
  • A colocação em cache de aplicações não é suportada para reuniões em que a contagem de utilizadores convidados seja superior a 20.
  • Se não for possível carregar uma aplicação, a aplicação não será colocada em cache.
  • No iOS, quando a aplicação Teams é terminada, a aplicação é removida da cache.

Exemplo de código

O fragmento de código seguinte é um exemplo de teamsCore.registerOnLoadHandler APIs e teamsCore.registerBeforeUnloadHandler :

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;
});

Ferramenta de depuração para aplicações em cache

Observação

A ferramenta de depuração para aplicações em cache está disponível na pré-visualização do programador público.

Pode ativar o Proto Task Manager no Teams, uma ferramenta de depuração que mostra a status das suas aplicações em cache. No seu cliente do Teams, selecione as teclas Controlo+Shift+Alt+8 no Windows ou Comando+Shift+Opção+8 no Mac para abrir o Proto Task Manager.

Captura de ecrã a mostrar o separador colocação em cache no Proto Task Manager no Teams.

O separador AppCaching contém os seguintes detalhes:

  • estado: mostra o estado da aplicação em cache ou não colocada em cache.
  • isActive: mostra a status ativa ou inativa da aplicação em cache.
  • timeElapsed: mostra o tempo decorrido desde que a aplicação foi colocada em cache.
  • supportsLoad: mostra se a aplicação registou o Load processador se a colocação em cache da aplicação está ativada.
  • supportsBeforeUnload: mostra se a aplicação registou o BeforeUnload processador se a colocação em cache da aplicação está ativada.
  • totalFrameMemory: mostra a utilização da memória da aplicação.
  • totalFrameCommitMemory: mostra a utilização da CPU da aplicação.

Aplicações de separador precaching

Observação

  • As aplicações de separador precaching estão disponíveis na pré-visualização do programador público.
  • As aplicações de separador precaching são suportadas apenas em clientes web e de ambiente de trabalho do Teams.

Embora a colocação em cache reduza os tempos de carregamento subsequentes de uma aplicação, a pré-instalação otimiza o tempo de carregamento inicial de uma aplicação ao permitir que o Teams pré-carregue a aplicação. O Teams pré-recarrega as aplicações em segundo plano após o início ou quando estão inativas, com base nos padrões de utilização recentes da aplicação dos utilizadores e no histórico de cache das aplicações. As aplicações pré-carregadas permanecem em cache até que o utilizador abra a aplicação, o que resulta num tempo de carregamento mais rápido.

Se ativar a pré-colocação, a sua aplicação utiliza recursos e os dados telemétricos são monitorizados no estado pré-instalado. Para saber como otimizar a sua aplicação para pré-configuração, veja as melhores práticas.

Ativar a pré-configuração para a aplicação de separador

Para ativar a pré-criação da sua aplicação de separador, siga estes passos:

  1. Ativar a colocação em cache de aplicações.

  2. Atualize o manifesto da aplicação da seguinte forma:

    1. Defina o valor de showLoadingIndicator como true. Esta ação garante que o Teams aguarda até que a sua aplicação envie notifySuccess para concluir a sequência de carga da aplicação durante a pré-criação. Para obter mais informações, veja showLoadingIndicator.

    2. Adicione o backgroundLoadConfiguration objeto e defina o contentUrl.

      {
      "backgroundLoadConfiguration": {
          "tabConfiguration": {
              "contentUrl": "https://www.contoso.com/content?host=msteams&isBackgroundLoad=true"
              }
          }
      }
      

      Observação

      • O contentUrl não pode conter parâmetros específicos do contexto, como o URL do site de equipa ou o ID do thread, uma vez que o Teams carrega aplicações sem contexto prévio durante o lançamento.
      • O contentUrl tem de ser genérico o suficiente para carregar em segundo plano sem qualquer interação do utilizador.

      Para obter mais informações, veja backgroundLoadConfiguration.

Monitorizar o carregamento em segundo plano

Pode identificar se o Teams carregou a aplicação em segundo plano sem interação do utilizador se monitorizar a isBackgroundLoad propriedade. Se o estado da propriedade for true, indica que o Teams carregou a aplicação em segundo plano e não consegue interagir com o utilizador. Por conseguinte, a aplicação não precisa de compor elementos da IU, como pedidos de início de sessão.

Monitorize a isBackgroundLoad propriedade no contexto da aplicação para otimizar a aplicação para carregamento e composição de precache eficazes. Para obter mais informações, veja isBackgroundLoad.

Práticas recomendadas

Seguem-se as melhores práticas para colocação em cache e pré-colocação de aplicações:

  • Recomendamos que implemente capacidades de armazenamento Web ou de trabalho de serviço para armazenar os dados ou a vista Web localmente. Isto ajuda a carregar a aplicação mais rapidamente nos lançamentos subsequentes.

  • Registe os beforeUnload processadores e onLoad logo após a chamada app.initialize e antes de a aplicação enviar notifySuccess. Se o cliente do Teams não vir estes registos antes de o utilizador sair da aplicação, a aplicação não será colocada em cache.

  • A pré-colocação aumenta o tráfego para a sua aplicação, além dos pedidos iniciados pelo utilizador. Certifique-se de que o ponto final que fornecer como contentUrl pode processar pedidos em segundo plano várias vezes para cada utilizador num dia. Certifique-se de que faz ajustes de telemetria necessários para acomodar o carregamento em segundo plano da aplicação.

  • Certifique-se de que a aplicação utiliza menos ou igual a 130 MB de memória no estado pré-instalado.

Limitações

Seguem-se as limitações da colocação em cache de aplicações:

  • As aplicações de página única que utilizam o encaminhamento do lado do cliente para navegação na página podem beneficiar da colocação em cache de aplicações. Recomenda-se que o mesmo domínio seja utilizado em todos os contextos da iniciação da sua aplicação.

  • As aplicações têm de voltar a registar-se para eventos como themeChange, focusEntere assim sucessivamente, no processador de carga. O cliente do Teams não enviará notificações para a aplicação quando estiver em cache. Se a sua aplicação necessitar de notificações mesmo quando está em cache, a colocação em cache poderá não ser a solução certa.

  • O cliente do Teams invoca o loadHandler único após a unload conclusão da sequência da aplicação. Por exemplo, se um utilizador iniciar o separador A da sua aplicação e, em seguida, iniciar o separador B da mesma aplicação, o separador B não receberá o sinal de carga até que o separador A invoque a readyToUnload chamada de retorno.

  • As aplicações são colocadas em cache por janela. A colocação em cache de aplicações ocorre numa base por aplicação (não por separador) na mesma janela.

  • A colocação em cache de aplicações não é suportada nos contextos da fase ou caixa de diálogo da reunião (referido como módulo de tarefas no TeamsJS v1.x), uma vez que estes podem ser abertos na parte superior do separador e não é possível utilizar a mesma iframe ou vista Web para compor o conteúdo no separador e na caixa de diálogo.

  • Registe apenas o beforeUnload processador se a sua aplicação não precisar de colocação em cache de aplicações, mas precisar de tempo para guardar o estado em segurança (uma vez que sair da aplicação pode fazer com que o conteúdo da aplicação seja removido abruptamente do Modelo de Objeto de Documento (DOM)). Se a aplicação não tiver sido registada para o load evento, será removida do DOM após a conclusão do unload fluxo.

  • Siga as diretrizes nesta secção para integrar a sua aplicação na colocação em cache de aplicações na reunião do Teams. Para suporte de colocação em cache de aplicações apenas em reuniões, registe os load processadores ou beforeUnload se o contexto for sidePanel.

  • Espera-se que as aplicações sejam colocadas em cache (utilize recursos de computação ou de rede mínimos e minimize os pedidos do SDK). Todos os processadores de registo e os seguintes pedidos do SDK são permitidos quando a aplicação é colocada em cache:

    • initialize
    • notifyappLoaded
    • notifySuccess
    • notifyFailure
    • notifyExpectedFailure
    • getContext
    • getAuthToken
    • readyToUnload
    • getConfig/getSettings

Solução de problemas

As aplicações não estão a ser colocadas em cache? Por que motivo o processador de carga não é invocado na navegação subsequente?

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

  • Reduza a quantidade de memória quando colocada em cache. Utilize o beforeUnload processador para eliminar recursos, por exemplo, referências de versão e remover serviços de escuta de eventos que podem não ser necessários quando colocados em cache.

Exemplo de código

Nome do exemplo Descrição Node.js
Colocação em cache de aplicações Aplicação de exemplo para mostrar como funciona a colocação em cache de aplicações no painel do lado da reunião. Exibir

Confira também