Unity を検索

Unity 製モバイルアプリにディープリンクを追加してユーザー体験を向上させる

2020年7月16日 カテゴリ: Engine & platform | 4 分 で読めます
取り上げているトピック
シェア

Unity プロジェクト内にディープリンクを追加することで、ユーザーをモバイルアプリ内の特定のコンテンツに直接誘導する簡単な方法です。ナビゲーションはまったく不要です。そのコンテンツは簡単に共有できるようになり、よりインタラクティブになり、新しいユーザーを獲得したり、既存のユーザーを新しいコンテンツに誘導したりすることができます。

モバイルアプリのディープリンクとは、ユーザーをアプリ内の特定の場所に直接誘導する URL のことです。たとえば、音楽アプリのディープリンクを使用すると、友達同士でお気に入りのプレイリストを共有して、そのプレイリストが自動的に音楽アプリで開くといった挙動が実現できます。ディープリンクを検索結果に埋め込んで、検索の詳細を再度入力しなければならない可能性のあるウェブサイトにユーザーを送る代わりに、特定のアプリ内のリッチコンテンツにユーザーを直接誘導するということもできます。

ディープリンクを使えば、ユーザーが探しているコンテンツに直接ユーザーを誘導できるだけでなく、開発者はリンクにロジックを追加することができます。例えば、SMS(または他のメッセージングシステム)でディープリンクの URL を介して報酬やギフトをユーザーに共有できるようにしたり、あるゲームから別のゲームの特定のコンテンツにジャンプさせたりして、ゲーム間でシームレスなユーザー体験を実現することで、ゲーム内のエンゲージメントを高めることができます。これにより、ユーザーのエンゲージメントが向上し、モバイルアプリ内の摩擦が軽減されます。

Unity 2019.2 でディープリンクのサポートを導入し、Android、iOS、ユニバーサル Windows プラットフォーム(UWP)で利用できるようになりました。このブログ記事では、Unity アプリでディープリンクを設定して実行させる方法を説明します。

ディープリンクを設定する

本質的には、ディープリンクは、単一のリンクを介してアプリケーションを起動したり、パラメーターを渡したりすることを可能にするものです。そして、ウェブページや SMS のテキストメッセージのような様々なソースから、ユーザーをアプリケーションの特定のエリアに誘導することができます。

まず、ディープリンクの URL からアプリケーションがアクティブ化されると、Unity は 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))
        	{
            	// 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 app expects a link formatted like this:
// 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:「Player Settings」ウィンドウの「Supported URL schemes」セクションからURLスキームを設定します。
  • Android:標準のアプリマニフェストをオーバーライドして、Activity の特定の intent-filter セクションを含めるインテントフィルターを設定します。
  • ユニバーサル Windows プラットフォーム(UWP):「Protocol」セクションの「Player Settings」ウィンドウからカスタム URI スキームを設定します。

プラットフォーム固有の設定の詳細については、「Enabling deep linking」のドキュメントページを参照してください。

ディープリンクのテスト

ディープリンクをテストする最も簡単な方法は、簡単な HTML ページを作成し、ローカルの Web サーバーでホストし、デバイスの Web ブラウザからアクセスすることです。例えば、以下のようにします。


<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
</head>
<body >
<h1>My Deep Link Test page</h1>
<h2 >
<a href="unitydl://mylink">Launch</a>
</h2>
<h2 >
<a href="unitydl://mylink?parameter">Launch with Parameter</a>
</h2>

</body>
</html>

サンプルプロジェクトをお試しください

メインメニュー以外の場所からアプリを起動するためにディープリンクを実装する方法を示すサンプルプロジェクトを作成しました。プロジェクトのソースはこちらにあります。最終的な結果は以下のようになります。

2020年7月16日 カテゴリ: Engine & platform | 4 分 で読めます
取り上げているトピック
関連する投稿