はじめに
今回はiOS(Safari)でgree/unity-webviewを利用して表示した画像に対して保存・共有といったことが可能にならないようにメニューを開かせないように設定する方法を紹介したいと思います。
やり方
-webkit-touch-calloutというcssを適応させることで実現できます。
どうやってやるのかというとgree/unity-webviewの場合はWebViewObject.EvaluateJSを利用します。
github.com
webViewObject.EvaluateJS("document.documentElement.style.webkitTouchCallout='none';")
ただしコンテンツが表示された後に実行しないといけないのに、WebViewObject.Initにて以下のように設定してあげる必要があります。
private void Start() { var webViewObject = new GameObject("WebViewObject").AddComponent<WebViewObject>(); // 初期化 webViewObject.Init( // NOTE: iOSでUIWebViewではなくWKWebViewを利用する(現在はほぼ必須な設定項目だと思ってもらえれば) enableWKWebView: true, ld: x => { // 長押しによるメニュー表示をさせないようにする webViewObject.EvaluateJS("document.documentElement.style.webkitTouchCallout='none';"); }); // URLを読み込みWebViewを表示する webViewObject.SetVisibility(true); webViewObject.LoadURL("https://www.google.co.jp/"); }
おまけ
仮に今回の対応をしなかった場合、iOS上で画像を保存しようとするとInfo.plistにNSPhotoLibraryAddUsageDescriptionを記述しないとクラッシュしてしまいます。

これを設定してあげると画像を保存しようとしたときに許可のダイアログが表示され、クラッシュしないようになります。