更新记录

1.0.9(2023-12-12)

  • 使用SDK@3.98版本适配
  • 导航栏打开第三方浏览器按钮 nav_out_link 不指定使用默认浏览器时,弹出选择浏览器列出手机内安装的浏览器列表。

1.0.8(2023-04-09)

  • 使用SDK@3.7.9版本适配
  • type:"webview" 新增跳转后快速双击退出窗口的控制属性:double_exit

1.0.7(2022-11-25)

  • 使用SDK@3.6.5版本适配
  • WebView 设置禁止保存密码和自动表单
    1. setSavePassword(false)
    2. setSaveFormData(false)
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 13.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


使用方式:

script 中引用插件,调用插件提供的函数即可。

App 平台支持网络网页和本地网页, 但必须放在 uni-app 项目根目录->hybrid->html 文件夹下

<script>
// 引入需要的插件
const cmdWebView = uni.requireNativePlugin('cmd-webview');

// 在代码如下使用
export default {
  mounted() {
    // 获取项目内静态网页及相关资源(js、css 等文件)
    console.log(`file:///android_asset/apps/${plus.runtime.appid}/www/hybrid/html/index.html`);
  },
  methods: {
    // 打开跳转窗口
    fnOpenActivity() {
      cmdWebView.openActivity({
        // 打开窗口类型必传 webview||browser||upgrade
        type: 'webview',
        // 打开页面链接, 必传
        // page_url: 'https://framework7.io/kitchen-sink/core/?theme=md',
        page_url: 'https://varlet.gitee.io/varlet-ui/mobile.html#/home?language=zh-CN',
        // 打开页面错误跳转链接,必传
        page_error: `file:///android_asset/apps/${plus.runtime.appid}/www/hybrid/html/index.html`,
        // 导航栏打开第三方浏览器按钮
        nav_out_link: false,
        // 导航栏打开第三方链接使用默认浏览器
        nav_out_browser: false,
        // 导航栏打开第三方链接跳转后销毁窗口
        nav_out_destroy: false,
        // 导航栏主页链接
        nav_home_link: 'https://www.baidu.com',
        // 导航栏背景颜色,默认白色#FFFFFF,支持格式(#RRGGBB #AARGGBB)
        nav_bg_color: '#FFFFFF',
        // 导航栏按钮颜色,默认黑色#000000,支持格式(#RRGGBB #AARGGBB)
        nav_btn_color: '#000000',
        // 窗口滚动条, 默认 false
        show_scroll_bar: false,
        // 状态栏填充,默认 false
        fits_status_bar: true,
        // 状态栏填充颜色,默认白色#FFFFFF,支持格式(#RRGGBB #AARGGBB)
        fits_status_color: '#FFFFFF',
        // 包名
        pkg_name: 'com.xunmeng.pinduoduo',
        // 包版本
        pkg_version: '5.7.0',
        // 包下载地址
        pkg_url: 'https://imtt.dd.qq.com/16891/apk/593200F314183B02A0DBBB73489CAB0F.apk?fsname=com.xunmeng.pinduoduo_5.7.0_50700.apk&csr=1bbd',
        // 跳转后销毁之前所有窗口
        destroy: false,
        // 跳转后快速双击退出窗口
        double_exit: false
      }, res => {
        // 响应结果
        console.log(JSON.stringify(res));
      });
    },
    // 复制文本到剪贴板
    fnCopyText() {
        // 需要复制的文本
        const text = "欢迎使用 cmd_webview 复制文本到剪贴板";
        const ok = cmdWebView.copyText(text);
        // 响应结果
        console.log(ok + " => " + text);
    },
    // DeepLink 跳转第三方应用APP
    fnLaunchActivity() {
        // 这些DeepLink下自己百度下,支持使用http跳转外部浏览器
        const url = "market://details?id=com.baidu.searchbox";
        const browser = false; // 打开第三方链接使用默认浏览器
        const destroy = false; // 打开第三方链接跳转后销毁当前窗口
        const ok = cmdWebView.launchActivity(url, browser, destroy);
        // 响应结果
        console.log(ok + " => " + url);
    },
    // Base64图片保存JPG到本地相册
    fnSaveBase64JPG() {
        const base64Data = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...`;
        // 去掉base编码头,只要逗号后面的编码字符
        const base64Str = base64Data.split(",")[1];
        const ok = cmdWebView.saveBase64JPG(base64Str);
        // 响应结果
        console.log(ok + " => " + base64Data.split(",")[0]);
    }
  },
};
</script>

.openActivity 打开跳转窗口

webview 全屏浏览窗

纯浏览网页窗口,可根据手机状态栏透明条背景覆盖,状态栏文字白色

传入类型为:type:"webview"

参数 类型 必传 默认值 说明
type String webview - 打开窗口类型
page_url String * - 打开页面链接
page_error String * - 打开页面错误跳转链接
show_scroll_bar Boolean false 窗口滚动条
fits_status_bar Boolean false 状态栏填充
fits_status_color String #FFFFFF 状态栏填充颜色,支持格式(#RRGGBB #AARGGBB)
destroy Boolean false 跳转后销毁之前所有窗口
double_exit Boolean false 跳转后快速双击退出窗口

browser 浏览窗带控制操作

带有底部导航栏(前进、后退、主页、刷新、关闭、外链)六项操作

传入类型为:type:"browser"

参数 类型 必传 默认值 说明
type String browser - 打开窗口类型
page_url String * - 打开页面链接
page_error String * - 打开页面错误跳转链接
show_scroll_bar Boolean false 窗口滚动条
fits_status_bar Boolean false 状态栏填充
fits_status_color String #FFFFFF 状态栏填充颜色,支持格式(#RRGGBB #AARGGBB)
destroy Boolean false 跳转后销毁之前所有窗口
nav_out_link Boolean false 导航栏打开第三方浏览器按钮
nav_out_browser Boolean false 导航栏打开第三方链接使用默认浏览器
nav_out_destroy Boolean false 导航栏打开第三方链接跳转后销毁窗口
nav_home_link String - 导航栏主页按钮链接,存在链接即显示
nav_bg_color String #FFFFFF 导航栏背景颜色,支持格式(#RRGGBB #AARGGBB)
nav_btn_color String #000000 导航栏按钮颜色,支持格式(#RRGGBB #AARGGBB)

upgrade 更新下载窗口

包名和版本会检测手机内是否安装对应程序版本,存在一致则直接跳转打开,否则根据链接下载进行强制提示安装。下载目录为本地Download文件夹内(包名_包版本.apk),

传入类型为:type:"upgrade"

参数 类型 必传 默认值 说明
type String upgrade - 打开窗口类型
pkg_name String * - 包名
pkg_version String * - 包版本
pkg_url String * - 包下载地址
destroy Boolean false 跳转后销毁之前所有窗口

响应码说明

code 说明
201 成功打开
202 参数不正确
500 插件异常

.copyText 复制文本到剪贴板

直接调用函数传入文本信息即可复制到手机剪贴板。

调用 .openActivity 打开跳转窗口,传入类型为:type:"webview"type:"browser" 时支持页面内调用函数。

// 复制文本到剪贴板
function fnCopyText() {
  const text = "欢迎使用 cmd_webview 复制文本到剪贴板";
  const ok = window.cmd_webview.copyText(text); // 需要复制的文本
  console.log(ok, " => " + text);
  alert(ok + " => " + text);
}

.launchActivity 跳转第三方应用

DeepLink 跳转第三方应用 或 HTTP 跳转外部浏览器

调用 .openActivity 打开跳转窗口,传入类型为:type:"webview"type:"browser" 时支持页面内调用函数。

// DeepLink 跳转第三方应用
function fnLaunchActivity() {
  // 这些DeepLink下自己百度下,支持使用http跳转外部浏览器
  const url = "market://details?id=com.baidu.searchbox";
  const browser = false; // 打开第三方链接使用默认浏览器
  const destroy = false; // 打开第三方链接跳转后销毁当前窗口
  const ok = window.cmd_webview.launchActivity(url, browser, destroy);
  console.log(ok, " => " + url);
  alert(ok + " => " + url);
}

.saveBase64JPG 将 Base64 图片保存 JPG 到本地

页面通过 js 方式保存 cavas 图像为 base64 时,可以直接调用保存到本地,保存目录为本地Pictures文件夹内(cmdbase64时间戳.jpg)。

调用 .openActivity 打开跳转窗口,传入类型为:type:"webview"type:"browser" 时支持页面内调用函数。

// Base64图片保存JPG到本地
function fnSaveBase64JPG() {
  const base64Data = `data:image/png;base64,iVBORw0KGgoAAAANSUh...`;
  // 去掉base编码头,只要逗号后面的编码字符
  const base64Str = base64Data.split(",")[1];
  const ok = window.cmd_webview.saveBase64JPG(base64Str);
  console.log(ok, " => " + base64Data.split(",")[0]);
  alert(ok + " => " + base64Data.split(",")[0]);
}

最后

  1. 使用已有的静态移动端 HTML 进行打包,因为手头没有 IOS 设备,就没做 IOS 的。
  2. 开发页面编写尽可能使用更类似手机原生的 web 页面框架。
  3. 只是想在 APP 打开自己指定的链接页面和配合跳转强制完成下载其他应用的可以考虑。
  4. 推荐参考 webview 组件 实现与 uni-app 交互,使用一些特殊魔法能力。

给大家推荐几个 HTML 阶段的 UI 框架,Vue 的就不说了。

QQ 群:76113575

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要联网、文件读写、应用安装权限,这三个权限在使用云打包时,uni-app项目已经选好,直接使用就好。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

没有采集数据和服务器地址调用,原生webview窗口。APP下载路径/Download文件夹内,BASE64图片保存路径/Pictures文件夹内

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

没有后门,没有广告,没有引入X5,单纯的原生WebView跳转给定的链接地址。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问