MRが楽しい

MRやVRについて学習したことを書き残す

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その17(スキームURIを使って自作アプリを開く)

本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はスキームURIを使って自作アプリを開く手順です。

前提条件

本記事では以下の記事で作成したUnityプロジェクトを基に設定を行います。
bluebirdofoz.hatenablog.com

スキームURIを使って自作アプリを開く

Quest3環境でスキームURIを使って自作アプリを開くには以下の作業が必要になります。
・AndroidManifest.xmlにカスタムURLスキームの設定を行う

AndroidManifest.xmlにカスタムURLスキームの設定を行う

プロジェクトのアセットフォルダにあるAndroidManifest.xmlを開きます。

Assets/Plugins/Android/AndroidManifest.xml

AndroidManifest.xmlに以下のようにインテントフィルターを追加しました。
今回の設定では testquestapp のURIでアプリが起動するようになります。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
  <application android:label="@string/app_name" android:icon="@mipmap/app_icon" android:allowBackup="false">
    <activity android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:excludeFromRecents="true" android:exported="true">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="com.oculus.intent.category.VR" />
      </intent-filter>

      <!-- カスタムURLスキーム設定 ここから追加 -->
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <!-- BROWSABLEを指定するとブラウザから起動できる -->
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="testquestapp"/>
      </intent-filter>
      <!-- カスタムURLスキーム設定 ここまで -->
      
      <meta-data android:name="com.oculus.vr.focusaware" android:value="true" />
    </activity>
    <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
    <meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only" />
    <meta-data android:name="com.oculus.ossplash.background" android:value="black" />
    <meta-data android:name="com.oculus.supportedDevices" android:value="quest|quest2|questpro" />
  </application>
  <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" />
</manifest>

developer.android.com

これでスキームURIで起動するアプリの設定は完了です。
以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com

URIを使ってアプリを開く

次に設定したスキームを利用してアプリを起動する別アプリを作成します。
今回は以下で作成したアプリ内でURIを開くプロジェクトを基にアプリを作成します。
bluebirdofoz.hatenablog.com

スクリプトを以下の通り修正し、ボタン押下で testquestapp のURIを開くようにしました。
・BrowserTest.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BrowserTest : MonoBehaviour
{
    /// <summary>
    /// 指定のURLをウェブブラウザで開く
    /// </summary>
    /// <returns></returns>
    public void OpenBrowser()
    {
        var uri = new System.Uri("testquestapp://redirect");
        Application.OpenURL(uri.AbsoluteUri);
    }
}

こちらのプロジェクトもビルドとQuest3へのデプロイを実行します。

ビルドと動作確認

初めに testquestapp のURIを開くアプリを起動し、ボタンを押下します。

すると以下の通り、先にインストールしておいたカスタムURLスキーム設定を行ったアプリが起動します。

ちなみに同じURLスキームを持つアプリが複数インストールされている場合は以下のような起動するアプリの選択肢が表示されます。