Table of Contents

自分のミニプログラムで dump ファイルを記録する

この記事では、ミニプログラム内で AR Session dump データの記録と転送を実装する方法を説明します。

開始する前に

実装方法

Switch コンポーネントを例として、記録の開始と終了を制御し、終了後に WeChat ネイティブ共有機能を呼び出します。

WXML 画面を作成する

ミニプログラムページに、記録の開始、終了、記録の転送を制御するためのフォームコンポーネント Switch を追加します。

<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">记录数据</switch>

ページロジック制御

この例では、WeChat Mini Program 画面に "Record data" という名前のスイッチが表示されます。その状態はミニプログラム内の 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 チャット経由で転送します。

/**
 * Session 記録ロジックを処理
 * @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
          });
      }
  })
}
注記

ミニプログラムのローカル容量制限 (通常 200 MB) のため、1 回の記録時間は長くしすぎないことをお勧めします。また、最大記録時間は 10 分を超えることはできません。