本日は HoloLens2 の小ネタ枠です。
HoloLensでアプリ内からスクリプトで他の自作アプリを開く方法を記事にします。
URIに応じたアプリの起動
UWPアプリではURIを用いて外部アプリを起動することができます。
更に予めスキームが登録された規定アプリは規定の URI スキームを利用することで起動することができます。
・URI に応じた既定のアプリの起動
docs.microsoft.com
一方で既定の URI スキームが設定されていない自作アプリを起動する場合は、自作アプリにスキーム名を登録する必要があります。
・URI のアクティブ化の処理
docs.microsoft.com
カスタムスキームの登録
今回は以下の記事で作成したユーザ名を取得するアプリにカスタムスキームの登録を行い、アプリからの起動を試してみます。
・HoloLens2でEnvironment.UserNameでのユーザ名の取得を試す
bluebirdofoz.hatenablog.com
カスタムスキームはパッケージマニフェストから追記します。
Unity ビルドで生成された VisualStudio のソリューションファイルを開きます。
ソリューションファイルが開いたら package.appxmanifest を選択してマニフェストファイルを開きます。
[宣言]タブを開き、[使用可能な宣言]のプルダウンから[プロトコル]を選択します。
[追加]ボタンをクリックすると、マニフェストにプロトコルの宣言が追加されます。
[表示名]と[名前]に固有の名称を設定します。
[名前]に入力した文字がカスタムスキームとなります。以下の点に注意が必要です。
・全て英字の小文字で入力すること
・既存のスキーム名と重ならないこと
今回は[showtextskm]と命名しました。
マニフェストファイルをテキストエディターで開くと[Protocol]セクションが追加されています。
この状態で HoloLens へのデプロイを行います。
サンプルアプリ
実際に自作アプリを別のアプリ内から呼び出すスクリプトを作成してみます。
アプリの呼び出しにボタンオブジェクトを利用するため、Unity プロジェクトに MRTK をインポートします。
MRTK のインポート手順は以下の記事などを参考にしてください
bluebirdofoz.hatenablog.com
先ほどのカスタムスキーム[showtextskm]のURIを指定して開く以下のサンプルスクリプトを作成しました。
・MyAppLauncher.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.WSA; public class MyAppLauncher : MonoBehaviour { public void LaunchMyApp() { // 自作アプリのスキーム名を指定すると対象アプリが呼び出される var uri = @"showtextskm:"; // URI を指定して起動する // bool 値の指定により URI が安全でない可能性の警告を表示します Launcher.LaunchUri(uri, true); } }
スクリプトを適当なゲームオブジェクトに設定します。
スクリプトの関数を呼び出すボタンイベントを設定してシーンの作成は完了です。
HoloLens2での動作確認
HoloLens2 にインストールして動作を確認します。
アプリケーションの HoloLens2 へのインストール手順は以下を参照ください。
bluebirdofoz.hatenablog.com
アプリが起動したらボタンをタップします。
指定の自作アプリが起動すれば成功です