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

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何调用扫码、拍照等移动客户端的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的第一个参数是一个地址,需要根据实际情况进行修改(重要!),用于引用第三方JS桥文件
        // JS桥文件是线上地址时,可以直接作为第一个参数传递,比如“http://xxx.com/jssdk.js”
        // 如果是本地文件,可以上传到跟index_m.js同级的目录,再通过./jsbridge.js相对路径引用
        // 如果需要引用多个JS文件,可以传递一个数组,比如['./jssdk1.js', './jssdk2.js']     
        loadjs('jsbridge.js', () => {            
            window.KDPlugin = {                
                setWebViewTitle: function (title) {                    
                    // todo:调用app的接口设置导航栏标题                
                },                
                scanQRCode: function (data = {}, callback) {                    
                // todo:调用app的接口打开扫一扫  
                  /**
                                 * 调用callback,会发送customEvent请求给后台
                                 * 注意callback的参数格式(如下)
                                 * success是固定参数,data的值可以自定义
                             */
                             // callback({
                             // success: true,
                             // data: data
                             // })              
                }            
            }            
            callback({ success: true })//插件安装成功回调{success:false, error:'error info'}        
        })        
        //如果要支持额外多个平台不支持的app,需要根据window.navigator.userAgent类型来设置最终window.KDPlugin的值    
    }
})();


3.上传自定义JS文件

将编写好的自定义JS文件压缩后上传至刚刚打开的登录页配置页面,并点击保存即可。


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

用户场景在苍穹移动端单据的开发过程中,经常会遇到需要调用APP接口的场景,例如扫码、拍照等等。那么,苍穹对这些接口的支持程度如何?同...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息