Usar seu mini programa para gravar arquivos dump
Este artigo descreve como implementar a gravação e o encaminhamento de dados AR Session dump em um mini programa.
Antes de começar
- Entenda o que é um arquivo AR Session dump.
Método de implementação
Use um componente Switch como exemplo para controlar o início e o fim da gravação, e chame o recurso nativo de compartilhamento do WeChat após o fim da gravação.
Escrever interface WXML
Adicione à página do mini programa um componente de formulário Switch, usado para controlar o início da gravação, o encerramento e o encaminhamento da gravação.
<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">记录数据</switch>
Controle da lógica da página
Neste exemplo, um switch chamado "Record data" aparecerá na interface do WeChat Mini Program. Seu estado é vinculado a dumpSessionFlag no mini programa, e ele é vinculado à função de callback dumpSessionChange no mini programa. No código ts do mini programa, é necessário implementar:
ar: null,
data: {
//o estado inicial do componente de formulario e fechado
dumpSessionFlag:false,
},
onReady() {
//obtem o componente xr-frame na cena
this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
//quando o botao e acionado, alterna a exibicao do componente de formulario
this.setData({
"dumpSessionFlag":event.detail.value
});
if (this.ar) {
//chama o metodo fornecido pelo componente xr-frame
this.ar.dumpSession(event.detail.value);
}
},
Implementar a lógica principal de gravação (dentro do componente xr-frame)
Controle o processo de gravação chamando a interface session.dumpSession(signal: boolean):
- Passar
true: inicia a gravação. - Passar
false: para a gravação e retorna o caminho temporário do arquivo (tempFilePath) gerado.
Ao iniciar a gravação, você pode indicar que a gravação começou usando wx.showToast(). Ao terminar a gravação, use wx.shareFileMessage() para encaminhar o arquivo gravado pelo chat do WeChat.
/**
* processa a logica de gravacao de Session
* @param signal true inicia a gravacao; false encerra a gravacao e encaminha
*/
dumpSession(signal: boolean): void {
// chama a interface para obter o caminho
const recordPath = session.dumpSession(signal);
// quando signal e true, a interface retorna uma string vazia para indicar que esta gravando
if (recordPath.length == 0) {
wx.showToast({
title: '开始记录数据',
icon: 'success',
duration: 2000
});
return;
}
// quando signal e false, processa o caminho de arquivo retornado
wx.shareFileMessage({
filePath: recordPath,
success() {
wx.showToast({
title: '记录转发成功',
icon: 'success',
duration: 2000
});
},
fail() {
wx.showToast({
title: '记录转发失败',
icon: 'error',
duration: 2000
});
}
})
}
Nota
Devido ao limite de espaço local dos mini programas, normalmente 200 MB, recomenda-se que uma gravação única não seja longa demais, e a duração máxima de gravação não deve exceder 10 minutos.