はじめに
基本的には上記サイト様が紹介してくださっている手順を踏めば
Android で Chrome Custom Tabs を使用できるようになりますが、
いくつか躓いた箇所があったため、備忘録として自分が踏んだ手順をまとめておきます
検証環境
- Unity 2020.1.6f1
手順
事前に Unity プロジェクトを Android に Switch Platform にしておきます
https://github.com/googlesamples/unity-jar-resolver
上記の GitHub リポジトリのページを開き、リポジトリを zip でダウンロードして、
ダウンロードした「unity-jar-resolver-master.zip」を展開して、
展開したフォルダ内の「external-dependency-manager-latest.unitypackage」を
Unity プロジェクトにインポートします
インポートが完了して上記のダイアログが表示されたら「No」を押します
上記のダイアログが表示されたら「Disable Registry Addition」を押します
Unity プロジェクトに「Editor」フォルダを作成して
「ResolveDependencies」スクリプトを作成します
using Google.JarResolver; using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class ResolveDependencies { static ResolveDependencies() { var support = PlayServicesSupport.CreateInstance ( clientName: "GooglePlayGames", sdkPath: EditorPrefs.GetString( "AndroidSdkRoot" ), settingsDirectory: "ProjectSettings" ); support.DependOn ( group: "com.android.support", artifact: "customtabs", version: "23.0.0" ); } }
作成した「ResolveDependencies」スクリプトに上記のコードを記述します
Unity プロジェクトに戻ってコンパイルが完了して
上記のダイアログが表示されたら「Disable」を押します
Unity メニューの「Assets > External Dependency Manager > Android Resolver > Force Resolve」を選択して
上記のダイアログが表示されたらプログレスバーが完了するまで待ちます
プログレスバーが完了して完了ダイアログが表示されたら
Unity プロジェクトの「Plugins/Android」フォルダに
上記のファイルが追加されていることを確認します
「Assets/Editor」フォルダと「Assets/ExternalDependencyManager」フォルダ内の
アセットは不要になるので
削除します
using UnityEngine; public static class ChromeCustomTabs { public static void OpenURL( string url ) { #if UNITY_EDITOR Application.OpenURL( url ); #elif UNITY_ANDROID using ( var unityPlayer = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) ) using ( var activity = unityPlayer.GetStatic<AndroidJavaObject>( "currentActivity" ) ) using ( var intentBuilder = new AndroidJavaObject( "android.support.customtabs.CustomTabsIntent$Builder" ) ) using ( var intent = intentBuilder.Call<AndroidJavaObject>( "build" ) ) using ( var uriClass = new AndroidJavaClass( "android.net.Uri" ) ) using ( var uri = uriClass.CallStatic<AndroidJavaObject>( "parse", url ) ) { intent.Call( "launchUrl", activity, uri ); } #endif } }
そして、上記のようなスクリプトを記述します
(参考:https://qiita.com/lucifuges/items/b17d602417a9a249689f#4-customtabsintent%E3%82%92c%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99)
ChromeCustomTabs.OpenURL( "https://baba-s.hatenablog.com/" );
あとは、上記のようなコードを記述することで
Android で Chrome Custom Tabs を使用して Web ページを開くことができます
補足
- Chrome Custom Tabs を閉じたかどうかは
MonoBehaviour.OnApplicationPause で判定できます