Table of Contents

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

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.