Table of Contents

당신의 미니프로그램에서 dump 파일 기록하기

이 문서는 미니프로그램에서 AR 세션 dump 데이터 기록 및 전달을 구현하는 방법을 설명합니다.

시작하기 전에

구현 방법

기록 시작/종료를 제어하기 위해 Switch 컴포넌트를 사용하는 예시로, 종료 후 WeChat 기본 공유 기능을 호출합니다.

WXML 인터페이스 작성

미니프로그램 페이지에 기록 시작/종료 및 전달을 제어하는 Switch 폼 컴포넌트를 추가합니다.

<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">기록 데이터</switch>

페이지 로직 제어

이 예시에서 WeChat 미니프로그램 인터페이스에는 "기록 데이터"라는 스위치가 표시됩니다. 상태는 dumpSessionFlag에 바인딩되며, dumpSessionChange 콜백 함수에 연결됩니다. ts 코드에서 구현해야 합니다:

ar: null,
data: {
    //폼 컴포넌트 초기 상태: 비활성화
    dumpSessionFlag:false,
},
onReady() {
    //장면 내 xr-frame 컴포넌트 가져오기
    this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
    //버튼 트리거 시 폼 컴포넌트 표시 전환
    this.setData({
        "dumpSessionFlag":event.detail.value
    });
    if (this.ar) {
        //xr-frame 컴포넌트 제공 메서드 호출
        this.ar.dumpSession(event.detail.value);
    }
},

핵심 기록 로직 구현 (xr-frame 컴포넌트 내부)

session.dumpSession(signal: boolean) 인터페이스 호출로 기록 과정 제어:

  • true 전달: 기록 시작.
  • false 전달: 기록 중지 및 생성된 임시 파일 경로(tempFilePath) 반환.

기록 시작 시 wx.showToast()로 알림 표시, 종료 시 wx.shareFileMessage()로 WeChat 대화방에 파일 전달.

/**
 * 세션 기록 로직 처리
 * @param signal true: 기록 시작, false: 기록 종료 및 전달
 */
dumpSession(signal: boolean): void {
  // 경로 획득을 위해 인터페이스 호출
  const recordPath = session.dumpSession(signal);
  // signal이 true일 경우 빈 문자열 반환 (기록 중 상태)
  if (recordPath.length == 0) {
      wx.showToast({
          title: '기록 시작',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // signal이 false일 경우 반환된 파일 경로 처리
  wx.shareFileMessage({
      filePath: recordPath,
      success() {
          wx.showToast({
              title: '기록 전달 성공',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '기록 전달 실패',
              icon: 'error',
              duration: 2000
          });
      }
  })
}
참고

미니프로그램 로컬 저장소 제한(일반 200MB)으로 인해 단일 기록 시간을 너무 길게 하지 말고, 최대 기록 시간은 10분을 초과할 수 없습니다.