당신의 미니프로그램에서 dump 파일 기록하기
이 문서는 미니프로그램에서 AR 세션 dump 데이터 기록 및 전달을 구현하는 방법을 설명합니다.
시작하기 전에
- AR Session 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분을 초과할 수 없습니다.