Grabar archivos dump con su mini programa
Este artículo explica cómo implementar la grabación y reenvío de datos de AR Session dump en mini programas.
Antes de comenzar
- Comprenda qué es un archivo AR Session dump.
Implementación del método
Tomemos como ejemplo el uso de un componente Switch para controlar el inicio y fin de la grabación, y llamar a la función de compartir nativa de WeChat al finalizar.
Escribir la interfaz WXML
Agregue un componente Switch en la página del mini programa para controlar el inicio y fin de la grabación.
<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">Grabar datos</switch>
Control de lógica de página
En este ejemplo, aparecerá un interruptor llamado "Grabar datos" en la interfaz del mini programa. Su estado está vinculado a dumpSessionFlag en el mini programa y a la función de retorno dumpSessionChange. En el código ts del mini programa se debe implementar:
ar: null,
data: {
// El estado inicial del componente es "apagado"
dumpSessionFlag:false,
},
onReady() {
// Obtener el componente xr-frame de la escena
this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
// Cambiar la visualización del componente al activarse
this.setData({
"dumpSessionFlag":event.detail.value
});
if (this.ar) {
// Llamar al método proporcionado por el componente xr-frame
this.ar.dumpSession(event.detail.value);
}
},
Implementar lógica central de grabación (dentro del componente xr-frame)
Mediante la interfaz session.dumpSession(signal: boolean) se controla el flujo de grabación:
- Pasar
true: Inicia la grabación. - Pasar
false: Detiene la grabación y devuelve la ruta temporal del archivo (tempFilePath).
Al iniciar la grabación, se puede usar wx.showToast() para notificar el inicio. Al finalizar, usar wx.shareFileMessage() para reenviar el archivo mediante chat de WeChat.
/**
* Manejar la lógica de grabación de Session
* @param signal true para iniciar, false para detener y reenviar
*/
dumpSession(signal: boolean): void {
// Llamar a la interfaz para obtener la ruta
const recordPath = session.dumpSession(signal);
// Cuando signal es true, la interfaz devuelve cadena vacía (grabando)
if (recordPath.length == 0) {
wx.showToast({
title: 'Iniciando grabación de datos',
icon: 'success',
duration: 2000
});
return;
}
// Cuando signal es false, procesar la ruta del archivo
wx.shareFileMessage({
filePath: recordPath,
success() {
wx.showToast({
title: 'Reenvío exitoso',
icon: 'success',
duration: 2000
});
},
fail() {
wx.showToast({
title: 'Error en reenvío',
icon: 'error',
duration: 2000
});
}
})
}
Nota
Debido a las limitaciones de espacio local en mini programas (normalmente 200MB), se recomienda no grabar durante períodos prolongados. La duración máxima de grabación no debe exceder los 10 minutos.