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 に反応させる方法は、プラットフォームごとに異なります。
プラットフォーム固有の設定の詳細については、「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>
メインメニュー以外の場所からアプリを起動するためにディープリンクを実装する方法を示すサンプルプロジェクトを作成しました。プロジェクトのソースはこちらにあります。最終的な結果は以下のようになります。