はじめに
今回は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
を記述しないとクラッシュしてしまいます。
これを設定してあげると画像を保存しようとしたときに許可のダイアログが表示され、クラッシュしないようになります。