更新记录
1.0.0(2023-03-20)
新版首发
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | 适用版本区间:11 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
KJ-WebViewToImage
生成图片长截图、支持vue页面、支持plus、vue、nvue里的WebView
vue页面生成图片长截图使用
<template>
<view class="content">
<view>我是首页</view>
<button type="primary" @click="takeSnapshot">当前页面生成长截图</button>
<button type="primary" @click="navigateTo">跳转</button>
<view v-for="(item,index) in 100">
<image class="image" src="https://ask.dcloud.net.cn/uploads/avatar/000/73/57/99_avatar_max.jpg"></image>
</view>
<view>结尾</view>
</view>
</template>
<script>
const KJWebViewToImage = uni.requireNativePlugin('KJ-WebViewToImage');
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
takeSnapshot() {
plus.nativeUI.showWaiting("正在长截图...", {
back: 'none'
});
var dic = {
"path": plus.io.convertLocalFileSystemURL("_doc/KJ-WebViewToImage"), //保存截图文件的路径
"pagePath": "pages/index/index", //当前页面的路由
"maxHeight": 0 //生成图片最大的高度 为0的话不限制,过大会造成闪退或者图片不能显示
};
KJWebViewToImage.takeSnapshot(dic, (res) => {
console.log("start:" + JSON.stringify(res));
plus.nativeUI.closeWaiting();
uni.saveImageToPhotosAlbum({
filePath: res.filePath,
success: function() {
console.log('save success');
}
});
})
},
navigateTo() {
uni.navigateTo({
url: "/pages/index/index2"
})
}
}
}
</script>
WebView生成图片长截图使用
<template>
<view class="content">
<view class="title">我是web-view组件</view>
<web-view ref="webview" class="webView" :src="src"></web-view>
<view class="title title2">我是plus.webview组件</view>
<view class="btns">
<button type="primary" @click="takeSnapshot">当前页面生成长截图</button>
<button type="primary" @click="search">搜索所有webview</button>
<button type="primary" @click="takeSnapshotV2_webview">web-view组件生成长截图</button>
<button type="primary" @click="takeSnapshotV2_plusWebview">plus.webview生成长截图f</button>
</view>
</view>
</template>
<script>
const KJWebViewToImage = uni.requireNativePlugin('KJ-WebViewToImage');
export default {
data() {
return {
src: 'https://ext.dcloud.net.cn/publisher?id=22130',
wv: null,
search_result: null
}
},
onLoad() {
},
onHide() {
plus.webview.close(this.wv);
},
onShow() {
var currentWebview = this.$scope
.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效
setTimeout(function() {
var wv = currentWebview.children()[0]
wv.setStyle({
top: uni.getSystemInfoSync().statusBarHeight + 44 + 30,
height: 200
})
}, 1000); //如果是页面初始化调用时,需要延时一下
setTimeout((res) => {
this.wv = plus.webview.create(this.src, "custom-webview", {
top: uni.getSystemInfoSync().statusBarHeight + 44 + 280,
height: 200
})
this.wv.show(); // 显示窗口
this.search()
}, 100)
},
methods: {
takeSnapshot() {
plus.nativeUI.showWaiting("正在长截图...", {
back: 'none'
});
var dic = {
"path": plus.io.convertLocalFileSystemURL("_doc/KJ-WebViewToImage"), //保存pdf文件的路径
"pagePath": "pages/index/index3", //当前页面的路由
"maxHeight": 0 //生成图片最大的高度 为0的话不限制,过大会造成闪退或者图片不能显示
};
KJWebViewToImage.takeSnapshot(dic, (res) => {
console.log("start:" + JSON.stringify(res));
plus.nativeUI.closeWaiting();
uni.saveImageToPhotosAlbum({
filePath: res.filePath,
success: function() {
console.log('save success');
}
});
})
},
search() {
KJWebViewToImage.search({
"noKeywords": ["__uniappview.html"] //不需要捕获的url关键字的webview
}, (res) => {
console.log("search:" + JSON.stringify(res));
/**
* 返回的json说明:{"result":[{"tag":1,"url":"https://ext.dcloud.net.cn/publisher?id=22130"},
*{"tag":2,"url":"https://ext.dcloud.net.cn/publisher?id=22130"}]}
* tag - webview的唯一id
* url - webview当前加载的地址
* **/
this.search_result = res.result;
})
},
takeSnapshotV2(tag) {
plus.nativeUI.showWaiting("正在长截图...", {
back: 'none'
});
var dic = {
"tag": tag, //search 方法返回的结果
"path": plus.io.convertLocalFileSystemURL("_doc/KJ-WebViewToImage"), //保存pdf文件的路径
"maxHeight": 0 //生成图片最大的高度 为0的话不限制,过大会造成闪退或者图片不能显示
}
KJWebViewToImage.takeSnapshotV2(dic, (res) => {
console.log("takeSnapshotV2:" + JSON.stringify(res));
plus.nativeUI.closeWaiting();
uni.saveImageToPhotosAlbum({
filePath: res.filePath,
success: function() {
console.log('save success');
}
});
})
},
takeSnapshotV2_webview() {
this.takeSnapshotV2(1);
},
takeSnapshotV2_plusWebview() {
this.takeSnapshotV2(2);
}
}
}
</script>
<style>
.title {
text-align: center;
color: red;
}
.title2 {
width: 100%;
position: absolute;
top: 240px;
}
.btns {
width: 100%;
position: fixed;
bottom: 20px;
display: flex;
flex-wrap: wrap;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.btns>button {
font-size: 14px;
}
</style>