Version: 2020.1
言語: 日本語
Unity as a Library を他のアプリケーションで使用
スタンドアロン

ディープリンクを有効にする

ディープリンクは、アプリケーション内のコンテンツを直接指すリンクです。Unity は Application.absoluteURL プロパティと Application.deepLinkActivated イベントを使用して、以下のプラットフォームでディープリンクをサポートします。

  • Android
  • iOS
  • ユニバーサル Windows プラットフォーム (UWP)

Unity は、ディープリンク URL からアプリケーションがアクティブ化されると、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 に反応するようにアプリケーションを設定するプロセスは、プラットフォームによって異なります。

iOS

ディープリンクにアプリケーションを反応させるには、URL スキームとユニバーサルリンクの 2 つの方法があります。

URL スキーム

URL スキームを追加するには、以下の手順を行います。

  1. iOS Player Settings ウィンドウを開きます (メニュー: Edit > Project Settings > Player Settings に移動し、iOS を選択します)。
  2. Other を選択し、下にスクロールして Configuration を表示します。
  3. Supported URL schemes セクションを展開し、Element 0 フィールドに、アプリケーションに関連付けられた URL スキーム (例えば unitydl) を入力します 。

これにより、アプリケーションは unitydl:// で始まるすべてのリンクを開き、Application.deepLinkActivated イベントで URL を処理できます。

ユニバーサルリンク

Unity エディターからユニバーサルリンクを使用するようにアプリケーションを設定することはできません。これには外部ウェブサイトが必要になるためです。詳細は、Apple ドキュメントの Universal Links for Developers を参照してください。

Android

ディープリンクを有効にするには、標準の アプリケーションマニフェスト をオーバーライドするインテントフィルターを設定して、アクティビティ用の特定の 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 を処理できます。

ユニバーサル Windows プラットフォーム (UWP)

カスタム URI スキームをアプリケーションに追加するには、以下を行います。

  1. UWP Player Settings ウィンドウを開きます (メニュー: Edit > Project Settings > Player Settings に移動し、UWP を選択します)。
  2. Publishing Settings を選択し、Protocol までスクロールします。
  3. Name フィールドに 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>
Unity as a Library を他のアプリケーションで使用
スタンドアロン