Table of Contents

ご使用のミニアプリでダンプファイルを記録する

本稿では、ミニアプリ内でAR Sessionダンプデータの記録および転送を実装する方法を説明します。

開始前に

実装方法

記録の開始/終了を制御するSwitchコンポーネントの使用例と、終了後の微信ネイティブ共有機能の呼び出しを紹介します。

WXMLインターフェースの作成

ミニアプリページにSwitchコンポーネントを追加します。

<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">データを記録</switch>

ページロジック制御

ミニアプリ画面に「データを記録」スイッチが表示され、その状態はdumpSessionFlagにバインドされます。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()でファイルを転送。

/**
 * Session記録ロジックを処理
 * @param signal true=記録開始, false=記録終了&転送
 */
dumpSession(signal: boolean): void {
  const recordPath = session.dumpSession(signal);
  if (recordPath.length == 0) { // 記録中
      wx.showToast({
          title: 'データ記録を開始',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // ファイルパスを処理
  wx.shareFileMessage({
      filePath: recordPath,
      success() {
          wx.showToast({
              title: '転送成功',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '転送失敗',
              icon: 'error',
              duration: 2000
          });
      }
  })
}
注記

ミニアプリのローカルストレージ制限(通常200MB)のため、単回記録は長時間行わず、最大記録時間は10分を超えないでください。