本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はスキームURLからパラメータを受け取る手順です。
前提条件
本記事では以下の記事で作成したUnityプロジェクトを基に設定を行います。
bluebirdofoz.hatenablog.com
URLからパラメータを受け渡す
QuestアプリでURLからパラメータを取得するには Application.deepLinkActivated イベントが利用できます。
docs.unity3d.com
URLのクエリ文字列を解析してパラメータをテキストに表示する以下のスクリプトを作成しました。
・ProcessDeepLinkChecker.cs
using System.Collections.Generic; using TMPro; using UnityEngine; public class ProcessDeepLinkChecker : MonoBehaviour { [SerializeField] private TMP_Text _text; public static ProcessDeepLinkChecker Instance { get; private set; } private void Awake() { if (Instance == null) { Instance = this; Application.deepLinkActivated += onDeepLinkActivated; if (!string.IsNullOrEmpty(Application.absoluteURL)) { // コールドスタートと Application.absoluteURL は null ではありません。そのため Deep Link を処理します onDeepLinkActivated(Application.absoluteURL); } DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } private void onDeepLinkActivated(string url) { Dictionary<string, string> parameters = new Dictionary<string, string>(); // URL をデコードして動作を決定します // この例では、リンクが以下のようにフォーマットされることを前提としています // unitydl://mylink?scene1 string queryString = url.Split("?"[0])[1]; string[] dataTexts = queryString.Split("&"[0]); foreach (string dataText in dataTexts) { string[] data = dataText.Split("="[0]); parameters.Add(data[0], data[1]); } // URLから取得したパラメーターをテキストメッセージに表示します string message = ""; foreach (KeyValuePair<string, string> parameter in parameters) { message += parameter.Key + ": " + parameter.Value + "\n"; } _text.text = message; } }
コンポーネントを設定してテキストオブジェクトへの参照を設定します。
今回は手順の簡略化のため、アプリ自身がURIを開くようにしました。
シーンにボタンオブジェクトを追加し、以下のURIを開くスクリプトを設定しました。
testquestapp://redirect?id=1&name=holomon
・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?id=1&name=holomon"); Application.OpenURL(uri.AbsoluteUri); } }
ビルドと動作確認
以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com
MetaQuest3でデプロイしたアプリを起動し、ボタンを押下します。
すると登録したURIスキームの呼び出しでアプリが再起動され、クエリ文字列で引き渡されたパラメータが取得できました。