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:
Chamadas
teamsCore.registerBeforeUnloadHandler
eteamsCore.registerOnLoadHandler
APIs.Use
contentUrl
eentityId
passe para o manipulador de carga para rotear para a página correta em seu aplicativo e invocarnotifySuccess
ounotifyFailure
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.
Disponha os recursos e execute qualquer limpeza necessária no manipulador e, em
beforeUnload
seguida, invoque oreadyToUnload
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 seguir está o diagrama de fluxo do lançamento do aplicativo armazenado em cache:
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 dabeforeUnload
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.
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
,focusEnter
e 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 sequência de descarregamento.
Registre os
load
manipuladores ebeforeUnload
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 aunload
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 dereadyToUnload
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 os contextos do estágio de reunião ou do módulo de tarefa, 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 no módulo de tarefa.
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 registrado para oload
evento, ele será removido do DOM após a conclusão do fluxo de descarregamento.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 oubeforeUnload
se o contexto forsidePanel
.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
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 |