Gravar arquivos dump com seu mini-programa
Este artigo explica como implementar a gravação e o encaminhamento de dados de dump da sessão AR em mini-programas.
Antes de começar
- Entenda o que é um arquivo de dump da sessão AR.
Método de implementação
Tomando como exemplo o uso de um componente Switch para controlar o início e o fim da gravação, e invocar a função de compartilhamento nativa do WeChat após o término.
Escrever a interface WXML
Adicione um componente Switch à página do mini-programa para controlar o início e o fim da gravação com compartilhamento.
<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">Gravar dados</switch>
Controle lógico da página
Neste exemplo, um interruptor chamado "Gravar dados" aparecerá na interface do mini-programa. Seu estado está vinculado a dumpSessionFlag no mini-programa e à função de retorno dumpSessionChange. O código ts do mini-programa deve implementar:
ar: null,
data: {
//Estado inicial do componente de formulário: desligado
dumpSessionFlag:false,
},
onReady() {
//Obter o componente xr-frame da cena
this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
//Alternar a exibição do componente quando o botão é acionado
this.setData({
"dumpSessionFlag":event.detail.value
});
if (this.ar) {
//Chamar o método fornecido pelo componente xr-frame
this.ar.dumpSession(event.detail.value);
}
},
Implementar a lógica central de gravação (dentro do componente xr-frame)
Controle o fluxo de gravação chamando a interface session.dumpSession(signal: boolean):
- Passe
true: inicia a gravação. - Passe
false: para a gravação e retorna o caminho temporário do arquivo (tempFilePath).
Ao iniciar a gravação, use wx.showToast() para notificar o início. Ao terminar, use wx.shareFileMessage() para encaminhar o arquivo via chat do WeChat.
/**
* Processar a lógica de gravação da sessão
* @param signal true para iniciar gravação, false para parar e encaminhar
*/
dumpSession(signal: boolean): void {
// Chamar interface para obter caminho
const recordPath = session.dumpSession(signal);
// Quando signal é true, retorna string vazia (gravação em andamento)
if (recordPath.length == 0) {
wx.showToast({
title: 'Iniciando gravação de dados',
icon: 'success',
duration: 2000
});
return;
}
// Quando signal é false, processar o caminho retornado
wx.shareFileMessage({
filePath: recordPath,
success() {
wx.showToast({
title: 'Gravação compartilhada com sucesso',
icon: 'success',
duration: 2000
});
},
fail() {
wx.showToast({
title: 'Falha ao compartilhar gravação',
icon: 'error',
duration: 2000
});
}
})
}
Nota
Devido ao limite de espaço local do mini-programa (normalmente 200MB), recomenda-se que cada gravação não seja muito longa. O tempo máximo de gravação não pode exceder 10 minutos.