Unity WebView 插件⭐️(十二)特定模块 安卓网页视图—AndroidGeckoWebView
📢前言
该文章是WebView 插件系列文章,传送门:浏览器插件3D WebView专栏
上一篇文章对3D WebView 插件的 AndroidWebView
做了一个详细的介绍说明
那本篇文章就来介绍下 AndroidGeckoWebView
的说明和使用方法
🔔特定模块 安卓网页视图—AndroidGeckoWebView
带有 Gecko Engine 的 3D WebView for Android使用的IWebView实现。
此类还包括针对特定于 Android 的功能的额外方法,您的应用程序可以使用本支持文章中描述的方法调用这些方法。
公共方法
1.启用远程调试
static void EnableRemoteDebugging()
使用 FireFox 的开发工具启用远程调试。请注意,此方法只能在创建任何 webview 之前调用。
如果启用了远程调试,您可以将您的设备连接到您的开发计算机并通过导航到about:debugging开发计算机上的 FireFox来远程调试 webview 实例。
2.确保内置扩展
static void EnsureBuiltInExtension(string uri, string id)
使用 GeckoView 的WebExtensionController.ensureBuiltIn()方法安装扩展。如果扩展已经存在并且版本相同,则不会重新安装它。
例子
#if UNITY_ANDROID && !UNITY_EDITOR
AndroidGeckoWebView.EnsureBuiltInExtension(
"resource://android/assets/your-extension/",
"example@example.com"
);
#endif
3.暂停
void Pause()
暂停此 webview 实例的处理、媒体和渲染,直到调用Resume()。
4.全部暂停
static void PauseAll()
暂停所有 webview 实例的处理、媒体和渲染。当应用程序暂停时,该方法由插件自动调用。
5.恢复
void Resume()
在上一次调用Pause()后恢复所有 webview 实例的处理和渲染。
6.恢复全部
static void ResumeAll()
在上一次调用PauseAll()后恢复对所有 webview 实例的处理和渲染。当应用程序暂停后恢复时,该方法由插件自动调用。
7.设置AudioAndVideoCaptureEnabled
static void SetAudioAndVideoCaptureEnabled(bool enabled)
默认情况下,网页无法通过 JavaScript 访问设备的摄像头或麦克风,即使用户已授予应用使用它们的权限。如果用户已通过标准 Android 权限对话框授予应用程序使用它们的权限,则调用SetAudioAndVideoCaptureEnabled(true)允许所有网页访问摄像头和麦克风。
例如,这对于启用 WebRTC 支持很有用。除了调用此方法外,应用程序必须在其 AndroidManifest.xml 中包含以下 Android 权限,并在运行时请求权限。
- android.permission.RECORD_AUDIO
- android.permission.MODIFY_AUDIO_SETTINGS
- android.permission.CAMERA
8.设置调试日志已启用
static void SetDebugLoggingEnabled(bool enabled)
默认情况下,Gecko 浏览器引擎将调试消息输出到 Logcat 日志,但您可以使用此方法禁用它。
9.设置Drm已启用
static void SetDrmEnabled(bool enabled)
启用 WideVine DRM。Gecko 默认禁用 DRM,因为它可能用于跟踪。您可以使用此页面上的 DRM 流测试来验证 DRM 是否已启用。
10.设置地理位置权限已启用
static void SetGeolocationPermissionEnabled(bool enabled)
默认情况下,即使用户已授予应用访问位置的权限,网页也无法通过 JavaScript 访问设备的地理位置。如果用户已通过标准 Android 权限对话框授予应用程序位置权限,则调用SetGeolocationPermissionEnabled(true)允许所有网页访问地理位置。
以下 Android 权限必须包含在应用程序的AndroidManifest.xml 中,并且在运行时由应用程序请求:
- android.permission.ACCESS_COARSE_LOCATION
- android.permission.ACCESS_FINE_LOCATION
重要的提示
地理定位在 Oculus 设备上不起作用,因为它们缺乏 GPS 支持。
11.设置表面
void SetSurface(IntPtr surface)
设置webview 呈现的Surface。例如,这可用于渲染到 Oculus OVROverlay。调用此方法后,webview 不再渲染到其原始纹理,而是渲染到给定的表面。
例子
var surface = ovrOverlay.externalSurfaceObject();
// Set the resolution to 1 px / Unity unit
// to make it easy to specify the size in pixels.
webView.SetResolution(1);
// Or if the webview is attached to a prefab, call WebViewPrefab.Resize()
webView.WebView.Resize(surface.externalSurfaceWidth(), surface.externalSurfaceHeight());
#if UNITY_ANDROID && !UNITY_EDITOR
(webView as AndroidGeckoWebView).SetSurface(surface);
#endif
12.设置用户首选项
static void SetUserPreferences(string preferencesJavaScript)
为 Gecko 引擎的可选user.js 首选项文件设置 JavaScript ,可用于选择性地修改浏览器引擎的设置。请注意,此方法只能在创建任何 webview 之前调用。
可以通过在 web 视图中加载 url “about:config” 来查看引擎的当前设置。可用的首选项没有详细记录,但以下页面列出了其中的一些:
- libpref 的 StaticPrefList.yaml
- ibpref 的 all.js
例子
AndroidGeckoWebView.SetUserPreferences(@"
user_pref('security.fileuri.strict_origin_policy', false);
user_pref('formhelper.autozoom', false);
");
公共活动
1.文件选择请求
EventHandler<FileSelectionEventArgs> FileSelectionRequested
表示页面请求文件选择对话框。例如,当文件输入被激活时,就会发生这种情况。调用事件参数的Continue(filePaths)回调以提供文件选择或调用Cancel()取消文件选择。
2.脚本警报
EventHandler<ScriptDialogEventArgs> ScriptAlerted
当页面中的脚本调用window.alert()时引发事件。如果没有处理程序附加到此事件,window.alert()则将立即返回并且脚本将继续执行。如果处理程序附加到此事件,则脚本执行将暂停,直到调用事件 args 的Continue()回调。
3.脚本确认请求
EventHandler<ScriptDialogEventArgs<bool>> ScriptConfirmRequested
当页面中的脚本调用window.confirm()时引发事件。如果没有处理程序附加到此事件,window.confirm()则将false立即返回并且脚本将继续执行。如果处理程序附加到此事件,则脚本执行将暂停,直到调用事件参数的Continue()回调,window.confirm()并将返回传递给Continue()的值。
4.已终止
EventHandler<TerminatedEventArgs> Terminated
表示浏览器进程意外终止,要么因为它崩溃,要么因为它被操作系统杀死。这是一个不可恢复的错误,因此如果发生此事件,则必须销毁并重新创建 webview。
💬总结
本篇文章介绍了关于AndroidGeckoWebView
特定版本的一些额外的接口
该版本的插件主要是适用于VR设备,里面也是集成了Android的部分相关内容
后面会针对其中的一些API方法出几篇实例演示的文章!
- 点赞
- 收藏
- 关注作者
评论(0)