運営からの通知を表示したりインストール成果報酬のあるアプリ一覧(オファーウォールなど)を表示したい時などの為に、外部のWebページを表示したい事があります。
ですがもし、そこで外部ブラウザに飛ばしてしまうとユーザが放り出された感を受けてしまいます。なので内部ブラウザアセットを導入してみました。
Uniwebview5の動作要件は以下の通りです。
- Unity 2020.1 or above
- iOS 9.0 or above
- Android 5.0 (API Level 21) or above
importした後、シーンにプレハブ等は特に追加で設置不要です。
スクリプトに以下のように記述するだけで基本的な動作はOKでした。
//コンポーネントを追加 var webView = gameObject.AddComponent<UniWebView>(); //全画面は息苦しいので少し小さく表示してみる webView.Frame = new Rect(25, 25, Screen.width-50, Screen.height-50); //Androidで戻るボタンを有効に。お好みで webView.SetBackButtonEnabled(true); //閉じた時の動作 webView.OnShouldClose += (view) => { webView = null; return true; }; //urlを読み込み webView.Load(url); //ナビボタンとDone(閉じる)ボタンの追加 webView.EmbeddedToolbar.Show(); //ブラウザの表示 webView.Show();
https://docs.uniwebview.com/ その他解説はこのサイトで見れますが、一部の機能がiOSやAndroidなどのプラットフォーム縛りがある事や、Windows版Unity Editorでは動作確認できない事に注意が必要です。
また、AdmobやFirebaseを使っている人は、Preference Panelで”Adds Android Browser”のチェックを外さないとクラス重複エラーが出ます。
他にも、使っているアセットによっては”Adds Kotlin”のチェックなども外す必要があります(逆に、必要なものまで外してしまうと、実行時にブラウザが表示されず、java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Lambda;のようなエラーがデバッガに出ます)。
コメント