ディープリンクとは、ウェブサイトではなくアプリケーション内の特定の場所にユーザーを遷移させるハイパーリンクです。ユーザーがディープリンクを選択すると、指定された場所 (例: Unity アプリケーションの特定のシーンなど) でアプリケーションが開きます。Unity は Application.absoluteURL プロパティと Application.deepLinkActivated イベントを使用してディープリンクをサポートします。
ディープリンクを処理する前に、アプリケーションを、ディープリンクに反応するように設定する必要があります。特定の URL に反応するようにアプリケーションを設定するプロセスは、プラットフォームによって異なります。Unity は、以下のプラットフォームでディープリンクをサポートしています。
ディープリンクは、アプリケーションの現在の状態に応じて 2 つの方法で処理できます。
どちらの場合も、Application.absoluteURL を使用して、アプリケーションで開くシーンを選択します。
以下のコードサンプルは、アプリケーションの現在の状態に応じてディープリンクを処理する方法を示しています。
using UnityEngine;
using UnityEngine.SceneManagement;
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))
{
// Cold start and Application.absoluteURL not null so process Deep Link.
onDeepLinkActivated(Application.absoluteURL);
}
// Initialize DeepLink Manager global variable.
else deeplinkURL = "[none]";
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
private void onDeepLinkActivated(string url)
{
// Update DeepLink Manager global variable, so URL can be accessed from anywhere.
deeplinkURL = url;
// Decode the URL to determine action.
// In this example, the application expects a link formatted like this:
// unitydl://mylink?scene1
string sceneName = url.Split('?')[1];
bool validScene;
switch (sceneName)
{
case "scene1":
validScene = true;
break;
case "scene2":
validScene = true;
break;
default:
validScene = false;
break;
}
if (validScene) SceneManager.LoadScene(sceneName);
}
}
ディープリンクをテストするには、以下の手順に従います。
これは、ディープリンクをテストするために使用できる HTML ファイルの例です。リンクをリダイレクトするには、いずれか 1 つの <a> 要素内の、href 属性を変更してください。
<html>
<head>
<meta charset="utf-8">
</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>