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:
Chamadas
teamsCore.registerBeforeUnloadHandler
eteamsCore.registerOnLoadHandler
APIs.Utilize
contentUrl
eentityId
transmita para o processador de carga para encaminhar para a página correta na sua aplicação e invocarnotifySuccess
ounotifyFailure
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.
Elimine os recursos e efetue qualquer limpeza necessária no processador e, em
beforeUnload
seguida, invoque a chamada de retorno para notificar oreadyToUnload
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):
Segue-se o diagrama de fluxo do lançamento da aplicação em cache:
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 dabeforeUnload
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.
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:
Atualize o manifesto da aplicação da seguinte forma:
Defina o valor de
showLoadingIndicator
comotrue
. Esta ação garante que o Teams aguarda até que a sua aplicação envienotifySuccess
para concluir a sequência de carga da aplicação durante a pré-criação. Para obter mais informações, veja showLoadingIndicator.Adicione o
backgroundLoadConfiguration
objeto e defina ocontentUrl
.{ "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.
- O
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 eonLoad
logo após a chamadaapp.initialize
e antes de a aplicação enviarnotifySuccess
. 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
,focusEnter
e 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 aunload
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 areadyToUnload
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 oload
evento, será removida do DOM após a conclusão dounload
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 oubeforeUnload
se o contexto forsidePanel
.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 |