现如今,渠道上架应用或游戏,对敏感信息合规检测还是比较严格的,一般都会采用自动化 + 人工检测。

比如上架审核一个无需相机和录音权限的包体,绝大部分会遭到拒审(除非漏检?)!

本次遇到的就是类似情况,内嵌 H5 的 Unity 游戏,之前是使用原生的 WebView 加载 H5 游戏,

可是实际运行发现加载速度未达到预期效果,调研发现 X5 WebView 据说还可以(有质的提升?)!

腾讯浏览服务 —— 官网


(图:来自官方)

好了!!!

加载速度问题找到了解决方案

原生 WebView 替换为 X5 WebView

具体实施很清晰方便,按照官方文档接入即可。

官方文档指出的是 在线下载内核 完成内核加载等操作,这是使用方式一

聪明的你们肯定略知还有方式二离线安装内核

嗯,总结出来了,x5 内核使用的两种方式:

  • 在线安装
  • 离线安装

在线安装是大概像这样

HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);QbSdk.setDownloadWithoutWifi(true);
QbSdk.initTbsSettings(map);
QbSdk.setTbsListener(new TbsListener());boolean need = TbsDownloader.needDownload(context, false);
QbSdk.initX5Environment(context, mPreInitCallback);
private static QbSdk.PreInitCallback mPreInitCallback = new QbSdk.PreInitCallback() {@Overridepublic void onCoreInitFinished() {Log.d(TAG, "tbs init finished");}@Overridepublic void onViewInitFinished(boolean isSupportX5) {if (isSupportX5) {//已经有可用的内核,无需下载Log.d(TAG, "support x5");} else {Log.d(TAG, "not support x5");//重置并清除缓存等,开始下载线上内核QbSdk.reset(mContext);TbsDownloader.startDownload(mContext);}}};

离线安装大概是这样

离线安装重点就是 installLocalTbsCore本地内核安装包

isInitTbs = QbSdk.canLoadX5(context);
if(!isInitTbs){//拷贝内核文件到自定义外部存储目录 (一个 apk)FileUtils.copyAssets(assetsTbsApkPath,externalPath);
}HashMap<String, Object> map = new HashMap<>(2);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
QbSdk.initTbsSettings(map);//最新版本说 canLoadX5 过时,不过当前没有使用最先版本,有兴趣自行查阅
//当前使用版本是:tbs_sdk_thirdapp_v4.3.0.253_44153.jar
boolean canLoadX5 = QbSdk.canLoadX5(context);
if (canLoadX5) {//已有可用内核,无需安装本地内核,直接初始化preInit(context);return;
}//开始安装本地内核
beginInstallLocalApk(context);
private void beginInstallLocalApk(final Context context) {QbSdk.reset(context);QbSdk.setTbsListener(new TbsListener() {@Overridepublic void onDownloadFinish(int i) {LogUtil.d(TAG, "onDownloadFinish code = " + i);}@Overridepublic void onInstallFinish(int code) {LogUtil.d(TAG, "onInstallFinish code = " + i);int tbsVersion = QbSdk.getTbsVersion(context);//这里是关注重点,本地安装成功之后是需要初始化的,切记preInit(context);}@Overridepublic void onDownloadProgress(int i) {LogUtil.d(TAG, "onDownloadProgress code = " + i);}});//getTBSFileDir: 这个路径是你之前从 assets 拷贝内核到外部存储目录的位置QbSdk.installLocalTbsCore(context, 46007, FileUtils.getTBSFileDir(context).getPath() + File.separator + APK_NAME);//读写权限还是要的String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};boolean hasPermission = PermissionUtils.checkPermissions(context, permissions);if (!hasPermission) {LogUtil.d(TAG, "requestPermissions");Activity activity = CoreManager.getInstance().getActivity();PermissionUtils.requestPermissions(activity, permissions);}}

如何获取内核安装包,可看看某乎文章 呼呼呼呼呼呼呼呼~~

回归标题内容

上述一番操作之后,估计已能成功通过两种方式接入 x5!

兴高采烈,运行 Demo,加载 H5 游戏,一番操作惊呆了

听说 TBS x5 Webview 加载 H5 游戏提示申请相机权限相关推荐

  1. vivo oppo 手机8.1.0 webview加载H5白屏问题

    记录一个webview 的深坑. vivo oppo 手机8.1.0 webview加载H5白屏问题 查看log发现: 神奇的报错 解决办法: 删除掉配置文件里的8.0的新特性适配: 感谢stacko ...

  2. webView加载H5页面出现空白页的解决办法

    最近在做一个理财的项目,其中用到的H5页面比较多,在项目后期出现了很多bug,今天介绍下webView加载H5出现空白的解决办法 首先介绍下出现问题的场景,我们在一个Activity中镶嵌了一个H5的 ...

  3. 鸿蒙系统中的 WebView 加载H5页面出现net::ERR_CLEARTEXT_NOT_PERMITTED的解决方法

    目前在学习鸿蒙系统开发相关的应用,在加载H5页面的时候,在页面上显示出现这也错误提示 net::ERR_CLEARTEXT_NOT_PERMITTED,百度了一番,显示的结果都是在安卓系统上的解决办法 ...

  4. Android WebView加载H5音视频自动播放、关闭Activity停止播放

    在Android加载H5,实现H5中的音视频自动播放  在Activity中添加代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELL ...

  5. Android使用WebView加载Url时提示“请在微信客户端打开链接”

    前言 最近在使用webView加载一个url时 提示弹出这样的图片 解决方法 在设置webView属性的时候 修改ua参数 我们通过这个链接拿到自己的ua参数 点击获取自己的UA参数 如图所示 我用的 ...

  6. iOS12 系统 webView加载H5页面,反复点击网页中视频播放 退出视频全屏 闪退解决方式。

    iOS 12系统webView 对H5播放器 有不兼容迹象,如果加载的H5视频是全屏播放的,频繁切换容易造成闪退. 在这个时候,就需要 前端 和 后台一起协商 解决这个问题. 其实这个问题很容易解决的 ...

  7. flutter 中使用 WebView加载H5页面异常net:ERR_CLEARTEXT_NOT_PERMITTED

    最近有个flutter项目中根据搜索结果跳转到相应的H5页面发现老是报错,曾现在闲暇拉出来解决哈 先来看一个搜索功能的测试 已进入详情页面就提示错误,尴尬了. 只有去检测代码了撒 Search.dar ...

  8. Android WebView加载h5打开麦克风与摄像头的权限问题

    目录 快速处理 app向系统申请录音与相机权限 h5向app申请录音和相机权限 详细解答 app权限与h5权限 录音与麦克风 默许的风险 最佳实践 Android webview h5 麦克风权限,摄 ...

  9. 关于WebView加载H5页面下载文件和下载完毕后自动打开文件

    前段时间有个项目需要在H5页面里下载文档文件,由于项目需求这里采用Android系统自带DownloadManager来进行后台自动下载管理,我们只需要稍微设置几个参数就进行文件下载了,并且下载进行时 ...

最新文章

  1. 你真的了解OKR吗?
  2. poj 3461 Oulipo(kmp统计子串出现次数)
  3. 服务程序增加系统托盘
  4. js date转string_JS之你到底是什么类型?
  5. springsecurity中session失效后怎样处理_结合Spring Security进行web应用会话安全管理
  6. 求边界点 -- Python
  7. 同步时间服务器修改同步间隔,如何更改Windows 10时间同步间隔
  8. 程序员的工资是不是太高了?真相让人心疼
  9. 【Windows】谷歌浏览器独立多开
  10. 航空航天行业工作站应用---EDA仿真计算工作站
  11. Unity 基础 之 使用 Display 简单的实现 多屏幕显示的效果
  12. 支付接口的API什么?SDK是什么?
  13. excel 2种方法将长日期修改成短日期
  14. C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码
  15. mysql未开启binlog恢复_无全量备份、未开启binlog日志,利用percona工具恢复delete的数...
  16. TextView简介
  17. Poly2Tri介绍
  18. 递归解决卖鸭子问题和验证角谷定理
  19. vue 图片查看器(可缩放,翻上下一页等)使用
  20. 常间的黑客攻击手段以及预防方法整理

热门文章

  1. 【算法三】排序算法之冒泡排序
  2. 计算机机房电气技术要求,机房UPS具体技术指标要求.doc
  3. I2C介绍及verilog实现(主机/从机可综合)
  4. Hadoop学习笔记之修改主机名IP地址
  5. JAVA使用ASCII码简单操作
  6. 三菱PLC之Q02HCPU 通讯数据(读软元件)破译记录
  7. CMake安装、配置编译C++代码(Mac、Linux)————附带详细步骤和代码
  8. IP、VIP、SCANIP
  9. vos 3000 话单分析
  10. Caltech 数据集转换成VOC格式