はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】gree/unity-webviewを用いてUnityでWebViewを実装する

はじめに

今回はgree/unity-webviewというgreeOSSとして公開しているWebViewをUnityアプリ上で表示するプラグインを紹介します。

unity-webview is a plugin for Unity 5 that overlays WebView components on Unity view.

// DeepL翻訳
unity-webviewはUnityビューにWebViewコンポーネントをオーバーレイするUnity 5用のプラグインです。

WebViewを利用している様子

対応プラットフォーム

  • Android
  • iOS
  • Unity Web Player
  • Mac

ただしWindowsはサポートしていないので注意してください。

WebViewとは

そもそもWebViewとはなんなのかと思われる方もいるかと思うので補足しますが、アプリに組み込まれるウェブコンテンツを表示するための機能のことを指します。

Webview or embedded browser control is a web browser that is embedded in a native app to display web content.

// DeepL翻訳
ウェブビューまたは埋め込みブラウザコントロールは、ウェブコンテンツを表示するためにネイティブアプリに埋め込まれるウェブブラウザです。

WebView - Wikipedia

インストール

Package ManagnerAdd package from git URL...に以下のURLを打ち込むことでインストールできます。

https://github.com/gree/unity-webview.git?path=/dist/package
PackageManagerのAdd package from git URL...

manifest.jsonに以下を追加してください。

{
  "dependencies": {
    ...
    "net.gree.unity-webview": "https://github.com/gree/unity-webview.git?path=/dist/package",
    ...
  }
}

使い方

まずは必要最低限な使い方を見ていきます。

private void Start()
{
    var webViewObject = new GameObject("WebViewObject").AddComponent<WebViewObject>();

    // 初期化
    webViewObject.Init(
        // NOTE: iOSでUIWebViewではなくWKWebViewを利用する(現在はほぼ必須な設定項目だと思ってもらえれば)
        enableWKWebView: true
    );
        
    // URLを読み込みWebViewを表示する
    webViewObject.SetVisibility(true);
    webViewObject.LoadURL("https://www.google.co.jp/");
}

WebViewObjectコンポーネントに対してInitとした後にSetVisibillity + LoadURLを実行するだけでWebViewを正しく表示できます。

Marginを設定する

// left, top, right, bottom
webViewObject.SetMargins(0, 0, 0, 100);

BASIC認証をする

webViewObject.SetBasicAuthInfo("Username", "Password");

補足ですがURLBASIC認証を埋め込んだりもできますが、Safariといったブラウザでは動作しないのでこちらのメソッドを利用するようにしてください。

http://ユーザ名:パスワード@example.com

ブラウザのページを進める

if (webViewObject.CanGoForward())
{
    webViewObject.GoForward();
}

ブラウザのページを戻す

if (webViewObject.CanGoBack())
{
    webViewObject.GoBack();
}

エラーのログをコンソールに出力する

webViewObject.Init(
    // NOTE: iOSでUIWebViewではなくWKWebViewを利用する(現在はほぼ必須な設定項目だと思ってもらえれば)
    enableWKWebView: true,
    // エラーの時はログを出力するようにしておく
    err: x => Debug.LogError($"ERR: {x}"),
    httpErr: x => Debug.LogError("HTTPERR: {x}")
);

注意点

Project Settings > Player > Other Settings > Configuration > Internet AccessRequireにしないとWebViewが正しく動作しないケースがあるので注意してください。

Internet AccessをRequireにする