如何调用扫码、拍照等移动客户端的API?

用户场景
在苍穹移动端单据的开发过程中,经常会遇到需要调用APP接口的场景,例如扫码、拍照等等。那么,苍穹对这些接口的支持程度如何?同一个接口在不同客户端的兼容性如何?对于客户需要集成到一些其他第三方的APP的情况,又该如何扩展才能调用这些接口呢?
通过本文,你可以了解到目前苍穹移动端对一些主流的移动客户端API的支持情况和调用方法。以及对于那些苍穹未集成的客户端API,如何自行扩展的方法。
支持情况
目前,苍穹集成了云之家和金蝶云App的大部分接口供移动端页面插件调用,企业微信、钉钉以及welink提供了部分接口(陆续支持),如下表:

除此之外,想要了解云之家支持的其他接口,可以查看云之家开放平台提供的API文档,苍穹大部分都已集成进来。
调用方法
这里以调用“扫一扫”和“选择图片/拍照”接口为例,提供Java插件调用的示例代码。其他接口的调用方法均可以参照这两个例子,通过 callAPPApi 指令调用,接口参数需要参阅云之家开放平台文档。
1.调用“扫一扫”
HashMap map = new HashMap();
map.put("method", "scanQRCode"); //scanQRCode 为云之家方法名
HashMap args = new HashMap();
args.put("needResult", 1); //是否需要处理,默认为0,扫描结果由云之家处理,1则直接返回扫描结果
map.put("args", args); //args 调用该云之家方法需要传递的参数
this.getView().executeClientCommand("callAPPApi", map);2.调用“选择图片/拍照”
HashMap map = new HashMap();
map.put("method", "selectPic"); //selectPic 为云之家方法名
HashMap args = new HashMap();
args.put("type", "camera"); //类型,“camera”代表“相机”,“photo”代表“相册”,不传表示从相机、相册中选择
map.put("args", args); //args 调用该云之家方法需要传递的参数
this.getView().executeClientCommand("callAPPApi", map);3.监听客户端回调
//如调用该App方法会有回调,则进该事件
@Override
public void customEvent(CustomEventArgs e) {
String eventName = e.getEventName();
String value = e.getEventArgs();
String key = e.getKey();
if(key.equals("callAppMethod")){
if(eventName.equals("scanQRCode")) {
//扫码处理逻辑
} else if (eventName.equals("selectPic")) {
//选择图片/拍照处理逻辑
}
}
}扩展方法
除了云之家、金蝶云App、企业微信、钉钉和welink之外,如果集成到其他客户端的轻应用中,想要调用客户端API的功能,则需要通过自定义JS的方式扩展。
1.下载自定义JS模板
使用管理员登录苍穹,然后点击 系统管理 -> 登录页配置 -> 高级设置 -> 下载模板,解压后有两个文件 index.js 和 index_m.js
index.js 用于扩展web端的页面
index_m.js 用于扩展移动端页面

2.自定JS开发
打开index_m.js文件,参考以下示例代码,编写自定义app插件。
(function () {
/**
* 自定义app插件入口
* @param {*} loadjs 加载app需要的js资源,可选
* @param {*} releaseResource 释放根页面资源,可选
* @param callback 插件安装回调,插件生效,最后必须调用:callback({success:true})
*/
window.initKDPlugin = function ({ loadjs, releaseResource }, callback) {
// loadjs的如何调用扫码、拍照等移动客户端的API?
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



