Unity WebView 插件⭐️(十二)特定模块 安卓网页视图—AndroidGeckoWebView

举报
呆呆敲代码的小Y 发表于 2021/09/27 09:55:18 2021/09/27
【摘要】 📢前言该文章是WebView 插件系列文章,传送门:浏览器插件3D WebView专栏上一篇文章对3D WebView 插件的 AndroidWebView 做了一个详细的介绍说明那本篇文章就来介绍下 AndroidGeckoWebView的说明和使用方法 🔔特定模块 安卓网页视图—AndroidGeckoWebView带有 Gecko Engine 的 3D WebView for ...

📢前言

该文章是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方法出几篇实例演示的文章!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。