ディープリンクは、アプリケーション内のコンテンツを直接指すリンクです。Unity は Application.absoluteURL
プロパティと Application.deepLinkActivated
イベントを使用して、以下のプラットフォームでディープリンクをサポートします。
Unity は、ディープリンク URL からアプリケーションがアクティブ化されると、Application.deepLinkActivated
イベントを呼び出します。このシナリオでディープリンクを処理するには、以下を行います。
Application.absoluteURL
を確認します。Application.deepLinkActivated
イベントをサブスクライブします。例えば、以下のコードを開始シーンのゲームオブジェクトにアタッチします。
public class ProcessDeepLinkMngr : MonoBehaviour
{
public static ProcessDeepLinkMngr Instance { get; private set; }
public string deeplinkURL;
private void Awake()
{
if (Instance == null)
{
Instance = this;
Application.deepLinkActivated += onDeepLinkActivated;
if (!String.IsNullOrEmpty(Application.absoluteURL))
{
// コールドスタートと Application.absoluteURL は null ではありません。そのため Deep Link を処理します
onDeepLinkActivated(Application.absoluteURL);
}
// DeepLink Manager グローバル変数を初期化
else deeplinkURL = "[none]";
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
private void onDeepLinkActivated(string url)
{
// DeepLink Manager グローバル変数をアップデート。そのため、URL はどこからでもアクセス可能です
deeplinkURL = url;
// URL をデコードして動作を決定します
// この例では、リンクが以下のようにフォーマットされることを前提としています
// unitydl://mylink?scene1
string sceneName = url.Split("?"[0])[1];
bool validScene;
switch (sceneName)
{
case "scene1":
validScene = true;
break;
case "scene2":
validScene = true;
break;
default:
validScene = false;
break;
}
if (validScene) SceneManager.LoadScene(sceneName);
}
}
特定の URL に反応するようにアプリケーションを設定するプロセスは、プラットフォームによって異なります。
ディープリンクにアプリケーションを反応させるには、URL スキームとユニバーサルリンクの 2 つの方法があります。
URL スキームを追加するには、以下の手順を行います。
unitydl
) を入力します 。これにより、アプリケーションは unitydl://
で始まるすべてのリンクを開き、Application.deepLinkActivated
イベントで URL を処理できます。
Unity エディターからユニバーサルリンクを使用するようにアプリケーションを設定することはできません。これには外部ウェブサイトが必要になるためです。詳細は、Apple ドキュメントの Universal Links for Developers を参照してください。
ディープリンクを有効にするには、標準の アプリケーションマニフェスト をオーバーライドするインテントフィルターを設定して、アクティビティ用の特定の intent-filter
セクションを加える必要があります。最も簡単な方法は、以下の AndroidManifest.xml
ファイルをプロジェクトの Assets/Plugins/Android
フォルダーに置くことです。アプリケーションをビルドすると、Unity はこのファイルを自動的に処理します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="unitydl" android:host="mylink" />
</intent-filter>
</activity>
</application>
</manifest>
これにより、アプリケーションは unitydl://
で始まるすべてのリンクを開き、Application.deepLinkActivated
イベントで URL を処理できます。
カスタム URI スキームをアプリケーションに追加するには、以下を行います。
unitydl
と入力します。これにより、unitydl://
で始まるリンクをアプリケーションで開くことができます。
ディープリンクをテストするには、HTML ファイルを作成し、 ローカルウェブサーバーでホストし、デバイスのウェブブラウザーからアクセスします。
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
</head>
<body >
<h1>My Deep Link Test page</h1>
<p><a href="unitydl://mylink">Launch</a></p>
<p><a href="unitydl://mylink?parameter">Launch with Parameter</a></p>
</body>
</html>