通用服务

优质
小牛编辑
129浏览
2023-12-01

通用服务


网页生命周期

1.BdHiJs.appnative.webview.load 打开新窗口加载当前应用页面(用于应用内页面的跳转,具有本应用的权限、JS SDK能力)

如果加载的URL为非应用可信域名,则该函数不做任何操作(console中应提示error信息以告知开发者错误原因:{URL}包含不可信域名)。 旧应用兼容:旧应用因未设置可信域名,则按原有逻辑,不做可信域名校验。

    BdHiJs.appnative.webview.load('https://...');

2.BdHiJs.appnative.webview.openURL 打开普通新窗口加载页面 (用于应用打开一个url,不具有JS SDK能力)zhongwojiu

如果URL符合如流应用调起规则,则进入如流应用调起规则流程,如果打开的是一个如流应用,则清空webview栈(含之前应用)的所有webview窗口。

    BdHiJs.appnative.webview.openURL('https://...?_bdAppAgentId=233&_bdGroupId=32344323');
    // 如果url中附带参数:
    // _bdAppAgentId(应用id)
    // _bdGroupId(前提是存在_bdAppAgentId,_bdGroupId可选,表示群应用)
    // 则校验应用URL,若校验成功则使用应用浏览器打开,否则,使用普通浏览器打开

3.BdHiJs.appnative.page.onStart 页面启动

    function onBdHiJsReady() {
        BdHiJs.appnative.page.onStart = function () {
            // 处理页面启动
        };
    }

4.BdHiJs.appnative.page.onPause 页面暂停

    function onBdHiJsReady() {
        BdHiJs.appnative.page.onPause = function () {
            // 页面切入后台隐藏时,会调用该方法
        };
    }

5.BdHiJs.appnative.page.onResume 页面恢复

    function onBdHiJsReady() {
        BdHiJs.appnative.page.onResume = function () {
            // 页面切入前台展示时,会调用该方法
        };
    }

6.BdHiJs.appnative.app.quit 退出页面

    BdHiJs.appnative.app.quit({
        data: {
            animated: true|false // 可选,Boolean,是否动画方式退出
        }
    });

6.BdHiJs.appnative.webview.visibilityChange 页面可见状态变更通知

    BdHiJs.appnative.webview.visibilityChange({
        onchange: function (data) {
            data.visibility // 必选,String,页面可见状态。'visible':可见;'hidden':不可见
        }
    });

7.BdHiJs.appnative.webview.disablePopGesture 禁用页面返回手势

    BdHiJs.appnative.webview.disablePopGesture({
        data: {
            disable: true // 必填,Boolean,是否关闭当前页面的返回手势
        },
        onsuccess: function(data) {
            // 关闭结果
            data.success // 必填,布尔值,关闭成功或者失败。实际使用中,不用考虑失败场景,目前端上没有失败逻辑。
        },
        onfail: function(err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        }
    });

独立应用生命周期

1.BdHiJs.appnative.app.canOpen 是否能打开独立应用

    BdHiJs.appnative.app.canOpen({
        data: 'xxxx', // 必选,String,要打开的应用的schema(iOS、Android均支持)或包名(仅Android支持,包名格式为:packageName;activetyName)
        onsuccess: function (data) {
            // data 是 Boolean 类型,表示能否打开
        },
        onfail: function (err) {
        }
    });

2.BdHiJs.appnative.app.open 打开独立应用

    BdHiJs.appnative.app.open({
        data: 'xxxx', // 必选,String,要打开的应用的schema(iOS、Android均支持)或包名(仅Android支持,包名格式为:packageName;activetyName),
        onsuccess: function (data) {
            // data 是 Boolean 类型,表示打开结果
            // true:打开成功
            // false:打开失败
        },
        onfail: function (err) {
        }
    });

3.BdHiJs.appnative.app.startApsPlugin(仅Android

4.BdHiJs.appnative.activity.start (仅Android)

网页间传递消息

1.BdHiJs.appnative.webview.addMsgKey 注册页面接收消息的 Key

    BdHiJs.appnative.webview.addMsgKey({
        data: 'xxxx', // 必选,String,自定义key
        onsuccess: function () {
            // 注册成功
        },
        onfail: function () {
            // 注册失败
        }
    });

2.BdHiJs.appnative.webview.removeMsgKey 移除页面接收消息的 Key

    BdHiJs.appnative.webview.removeMsgKey({
        data: 'xxxx', // 必选,String,自定义key
        onsuccess: function () {
            // 移除成功
        },
        onfail: function () {
            // 移除失败
        }
    });

3.BdHiJs.appnative.webview.msgSend 发送页面消息

    BdHiJs.appnative.webview.msgSend({
        data: {
            key: 'xxxx', // 必选,String,接收消息的页面Key
            host: 'xxxx', // 必选,String,接收消息的页面域名
            msg: '{}' // 必选,JSON字典,自定义消息体
        },
        onsuccess: function () {
            // 发送成功
        },
        onfail: function () {
            // 发送失败
        }
    });

4.BdHiJs.appnative.webview.msgRcvListener 接收页面消息

    function onBdHiJsReady() {
        BdHiJs.appnative.webview.msgRcvListener = function (key, msg) {
        }
    }

对话框 Dialog

1.BdHiJs.appnative.dialog.showList 显示列表对话框

    BdHiJs.appnative.dialog.showList({
        data: { 
            // data应当为JSON字符串。BdHiJs.sdk.version.get() >= 16,data支持js对象
            count: 2, // list 元素个数
            cancelable: 1, // 是否可被取消
            cancelname: 'Cancel', // 取消按钮显示名
            title: 'Title', // 对话框标题
            desc: 'hello', // 对话框描述
            list: [
                { 
                    // 对话框按钮列表
                    name: 'NameList1', // 必填,String,列表项显示名
                    value: 'ValueList1', // 必填,String,列表项点击返回值
                    toast: 'ToastList1' // 选填,String,列表项提示语
                }, 
                {
                    name: 'NameList2',
                    value: 'ValueList2',
                    toast: 'ToastList2'
                }
            ]
        },
        onsuccess: function () {
            // 参数解析成功
            // 已显示对话框
        },
        onfail: function (err) {
            // 参数解析失败
            // 未显示对话框
        },
        listener: function (data) {
            // 用户点击列表项
            // data 是列表项点击返回值
        }
    });

2.BdHiJs.appnative.dialog.showYesno 显示Yes No对话框

    BdHiJs.appnative.dialog.showYesno({
        data: { 
            // data应当为JSON字符串。BdHiJs.sdk.version.get()>= 16,data支持js对象
            count: 1,
            cancelable: 1,
            title: 'Title',
            desc: 'hello',
            yes: {
                name: 'Submit',
                value: 'SubmitValue',
                toast: 'SubmitToast'
            },
            no: {
                name: 'Cancel',
                value: 'CancelValue',
                toast: 'CancelToast'
            }
        },
        onsuccess: function () {
        },
        onfail: function (err) {
        },
        listener: function (data) {
        }
    });

3.BdHiJs.appnative.dialog.showCheckbox 显示复选框对话框

    BdHiJs.appnative.dialog.showCheckbox({
        data: { 
            // data应当为JSON字符串。BdHiJs.sdk.version.get()>= 16,data支持js对象
            'count': 1,
            'cancelable': 1,
            'title': '班车提醒(提前15分钟)',
            'list': [
                {
                    'name': '同时添加到手机日历',
                    'value': 'ValueList1',
                    'isSelected': '1'
                }
            ],
            'yes': {
                'name': 'Submit',
                'value': 'SubmitValue',
                'toast': 'SubmitToast'
            },
            'no': {
                'name': 'Cancel',
                'value': 'CancelValue',
                'toast': 'CancelToast'
            }
        },
        onsuccess: function () {
        },
        onfail: function (err) {
        },
        listener: function (data) {
        }
    });

提示框 Toast

1.BdHiJs.appnative.toast.show 显示提示框

    BdHiJs.appnative.toast.show({
        text: 'This is a toast !', // 兼容旧版本
        status: 1, // 兼容旧版本
        data: {
            text: 'This is a toast !', // 必填,String,提示内容
            status: 1|2|3, // 可选,Number,提示状态。1:警告;2:成功;3:失败。不填写默认为 2。仅支持iOS。Android没有提示状态。
            time: 0|1 // 可选,Number,提示时长。0:短时间展示;1:长时间展示。仅支持Android。iOS根据提示内容长度自动计算提示时间。
        },
        ondismiss: function () {
            // 提示框已消失
        },
        onfail: function (err) {
        }
    });

加载框 Loading

1.BdHiJs.appnative.loading.show 显示加载框

    BdHiJs.appnative.loading.show('标题');

2.BdHiJs.appnative.loading.dismiss 隐藏加载框

    BdHiJs.appnative.loading.dismiss();

设备振动

1.BdHiJs.appnative.vibrator.vibrate

    BdHiJs.appnative.vibrator.vibrate(milliseconds);
    // milliseconds,Number,要震动的时间长度要求大于0,单位毫秒。iOS并不支持震动时长

2.BdHiJs.appnative.vibrator.vibrateCycle(仅Android)

页面抖动

1.BdHiJs.appnative.kicker.shake

    BdHiJs.appnative.kicker.shake();

状态栏

1.BdHiJs.appnative.statusbar.custom(仅iOS)定制状态栏样式

    BdHiJs.appnative.statusbar.custom({
        data: '{"style": "1|2"}', // 必填,字符串(BdHiJs.sdk.version.get()  >= 15也支持整数),设置导航栏样式。1:黑色;2:白色
        onsuccess: function () {
            // 设置成功
        }
        onfail: function () {
            // 设置失败
        },
    });

2.支持通过 URL 参数控制

hi_statusbar_style(仅iOS)定制状态栏样式
hi_statusbar_color(仅Andorid)定制状态栏颜色

导航栏

1.BdHiJs.appnative.navigationbar.bgcolor 导航栏背景色

    BdHiJs.appnative.navigationbar.bgcolor({
        data: {
            "color": "#ffffff"
        }, // 必填,color类型是String,格式为十六进制色值(#ffffff)
        onfail: function () {
            // 设置失败
        },
        onsuccess: function () {
            // 设置成功
        }
    });
    //同时支持URL参数控制
    //hi_navi_bgcolor   导航栏背景色

2.BdHiJs.appnative.navigationbar.custom(仅iOS)全面定制导航栏

    BdHiJs.appnative.navigationbar.custom({
        data: {
            "bgColor" : "#ffffff",
            "itemColor" : "#ffffff",
            "titleColor": "#ffffff"
        }, // 必填,color类型是String,格式为十六进制色值(#ffffff)。分别为背景颜色、左右按钮文字颜色、中间标题颜色
        onfail: function () {
            // 设置失败
        },
        onsuccess: function () {
            // 设置成功
        }
    });

3.自定义导航栏进度条颜色

hi_navi_progress_color=ffffff(仅iOS)

4.BdHiJs.appnative.title.setText 导航栏中间标题 Title

    BdHiJs.appnative.title.setText("customTitle"); // 必填, 要展示的字符串。无回调
    //同时支持URL参数控制
    //hi_navi_title   导航栏标题
    //hi_navi_title_color   导航栏标题颜色

5.BdHiJs.appnative.title.setTab 定制Navigation Title UISegmentedControl

    BdHiJs.appnative.title.setTab({
        data: { 
            // data应当为JSON字符串,要展示的title的tab描述字符串,数量限制在2-3个,超过则不显示。BdHiJs.sdk.version.get() >= 16,data支持js对象
            count: 2,
            title: [
                {
                    name: 'title1', // 显示名,字符串,必填
                    value: 'ValueTab1', // 值,字符串,必填
                    default_show: 1, // 是否默认显示,数字,可选。1:默认显示
                }, 
                {
                    name: 'title2',
                    value: 'ValueTab2'
                }
            ];
        },
        onsuccess: function (data) {
            // 设置结果
            data.success 必填认证成功或者失败
        },
        onfail: function (err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        },
        listener: function (result) { 
            // 被点击后的value被传到listener中
        }
    });

6.BdHiJs.appnative.title.setSelect(仅Android)

7.BdHiJs.appnative.title.textClick 定制Navigation Title 点击事件

    BdHiJs.appnative.title.textClick({
        data: { 
            // data应当为JSON字符串。BdHiJs.sdk.version.get()>= 16,data支持js对象
            'text': 'titleName',
            'iconId': 14;
        },
        onsuccess: function (data) {
            // 设置结果
            data.success,必填,Boolean,设置成功或者失败
        },
        onfail: function (err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        },
        listener: function (result) {
        }
    });

8.BdHiJs.appnative.menu.setButton 导航栏右侧菜单 Menu

    BdHiJs.appnative.menu.setButton({
        data: { 
            // data应当为JSON字符串。BdHiJs.sdk.version.get()>= 16,data支持js对象.其中name是button上展示的字,value是点击button传输至listener中值。
            'name': '最多6个字',
            'value': 'vvv';
        },
        onsuccess: function (data) {
            // 设置结果
            data.success 必填 设置成功字符串信息
        },
        onfail: function (err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        },
        listener: function (result) {
        }
    });

9.BdHiJs.appnative.menu.setSelect 定制Navigation Right Menu(点击弹出actionSheet)

    BdHiJs.appnative.menu.setSelect({
        data: { 
            // data应当为JSON字符串,。BdHiJs.sdk.version.get()>= 16,data支持js对象
            'count': 2, // 其中name是展示的名字,value是点击这个select之后要传到listener的值,后面的default是标记了那个select是被选择了的,第一个default为1的有效
            'title': [
                {
                    'name': 'title1',
                    'value': 'ValueTab1',
                    'default_show': '1'
                },
                {
                    'name': 'title2',
                    'value': 'ValueTab2'
                }
            ];
        },
        onsuccess: function (data) {
            data.success
        },
        onfail: function (err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        },
        listener: function (result) { 
            // 被点击后的value被传到listener中
        }
    });

10.BdHiJs.appnative.menu.setList(仅Android)

11.BdHiJs.appnative.menu.setNone 将右侧barItem设置为none

    BdHiJs.appnative.menu.setNone({
        onsuccess: function () {
            // 设置成功,无失败场景
        },
        onfail: function () {
            // 设置失败
        }
    });

12.BdHiJs.appnative.menu.setDefault 将右侧barItem设置为默认外观

    BdHiJs.appnative.menu.setDefault({ 
        // 默认按钮外观上为。。。,点击后可以“发送给朋友”“刷新”“复制链接”“用浏览器打开
        onsuccess: function () {
            // 设置成功,无失败场景
        },
        onfail: function () {
        }
    });

13.BdHiJs.appnative.menu.setIcon 右侧barItem定制icon

    BdHiJs.appnative.menu.setSelect({
        data: { 
            // data应当为JSON字符串,BdHiJs.sdk.version.get()>= 16,data支持js对象
            'count': 2, // 其中count值要同menu的个数相等。iconId是图标的id,name是展示的名字,value是点击这个list之后要传到listener的值。
            'menu': [
                {
                    'icon': 1,
                    'name':'nnn'
                    'value': 'nnnValue',
                    'default_show': '1'
                },
                {
                    'icon': 2,
                    'name':'vvv'
                    'value': 'vvvValue'
                }
            ];
        },
        onsuccess: function (data) {
            data.success  // 必填,设置成功字符串信息
        },
        onfail: function (err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        },
        listener: function (result) { 
            // 被点击后的value被传到listener中
        }
    });

输入框

1.BdHiJs.appnative.input.showInputBar 打开输入键盘

    BdHiJs.appnative.input.showInputBar({
        data: {
            max_length: 500, // 可选, Number。最大输入字符长度。默认为2000,最大限制为2000。
            placeholder: "请输入评论", // 可选,String。输入框提示内容,不可编辑。默认为:输入消息。
            value: "", // 可选,String。输入框内容,可编辑。默认为空。
            id: "comment1", // 可选,String。作为缓存文本内容的唯一标识。
            fixed: true, // 可选,Boolean。键盘是否一直固定底部。true: 始终固定底部, false: 隐藏不显示。默认为 false。
            becomeFirstResponder: true, // 可选,Boolean。是否弹起键盘。true: 弹起,false: 不弹起。默认为true。
            custom_bar: [], // 可选,Array。需要的+号面板辅助功能。不传或者为空数组代表不需要辅助功能,能以数组内的顺序排序。支持的辅助功能有:
            // 'emotion': 表情
            // 'camera': 相机
            // 'image': 相册
            // 'file': 文件
            // 'voiceInput': 语音输入文本
            file_options: { 
                // 可选,Object。调起+号面板文件、相册功能需要的参数
                // 相机、相册相关参数
                original: true, // camera、image 必填,Boolean。是否需要原图,如果需要原图,则不压缩图片。
                thumb: true, // camera、image 必填,Boolean。是否需要缩略图。
                maxLimit: 1, // image 必填,允许用户选择的最大个数。
                // 文件相关参数
                accept: [], // 可选,Array。指定显示文件的类型,不填则全显示。
                multiple: 1, // 可选,Number。允许用户选择最大文件个数。
                maxSize: 1 // 可选,Number。文件最大大小。单位为M
            },
            custom_voice_input_options:{
                // 可选,Object。调起+号面板语音输入文本需要的参数
                // 语音输入模型的相关参数,如果要选的话,app_id,pid,app_key必须一起填写
                app_id: "10000", // 可选,认证相关,app_id,pid,app_key必须一起填写
                pid: "10000", // 可选,认证相关,app_id,pid,app_key必须一起填写
                app_key: "xxx.xxxxx.xx.xxxxxx", // 可选,认证相关,app_id,pid,app_key必须一起填写
                url: "https://vse.baidu.com/v2"// 可选,认证相关,如果未上线,请填写测试服务地址
            }
        },
        onsuccess: function (data) {
            data.top_y // 必填,Number。键盘上边距离屏幕顶部的距离。
        },
        onfail: function (err) {
            // 接口调用失败
            // err为字符串,说明接口调用失败原因
        },
        listener: function (data) {
            // 用户输入结果
            // 输入框的输入结果
            data.id // 可选,String。缓存文本内容的唯一标识。
            data.input // 可选,Array。输入内容的数组。元素格式如下:
            // 文本:{type:”text”, content:”123”}
            // 表情:{type:”face”, content:”face01.png”}
            // 文件选择结果
            data.files // 可选,Array。输入框选择文件返回的结果。数据格式参考file.chooseFile接口的返回结果
        }
    });

2.BdHiJs.appnative.input.showEmotion 打开输入表情框

    BdHiJs.appnative.input.showEmotion({
        onsuccess: function (data) {
            data.success // 设置成功,bool类型 无失败场景
        },
        onfail: function () {
        },
        listener: function (result) { 
            //所点击表情的 url 封装在 json 中返回
            result.id // string 调用 input.show 时传入的id,如未指定,则无此字段
            result.emotion // string 表情名称
            reslut.emotion_key // string 表情关键字
        }
    });

3.BdHiJs.appnative.input.setHeightChangeListener 监听键盘高度

    BdHiJs.appnative.input.setHeightChangeListener({
        onsuccess: function (data) {
        data.success // 设置成功,bool类型 无失败场景
        },
        onfail: function () {
        },
        listener: function (result) { 
            // json返回格式 {id:”123”,top_y:400}
            result.id // string 调用 input.show 时传入的id,如未指定,则无此字段
            result.top_y // int 输入框的顶部在屏幕中的y轴
        }
    });

图片

1.BdHiJs.appnative.pic.show 浏览图片

    BdHiJs.appnative.pic.show({
        data: {
            files: [ { url: https://..., name: pic1}, ... ], // 可选,数组(元素未url地址和图片名),原图。优先使用 files 显示原图。
            urls: [ https://..., ... ], // 可选,数组(元素为url地址),原图。如果 files 不存在,则使用 urls 显示原图
            thumbs: [ ...., ....], // 可选,数组(元素为缩略图数据的base64编码),缩略图。先显示缩略图,再加载原图。如果原图地址不存在,则只显示缩略图。
            // - iOS端在 BdHiJs.sdk.version.get() >= 15 时新增
            // - Android端暂无
            position: 0, // 可选,整数,默认显示第几张图片
        },
        onfail: function(err) {
        },
        onsuccess: function() {
            // 已显示图片浏览器
        }
    });

2.BdHiJs.appnative.pic.takePic 拍照图片上传

    BdHiJs.appnative.pic.takePic({
        data: {
            thumb: 1, // int,是否需要返回base64缩略图,1为返回, 0为不返回,默认不返回
            original: 1, // int,是否拍照直接上传原图。1 为上传原图,0为上传大图, 默认上传大图。大图本地压缩到1M内,影响上传速度看需求选择该参数,建议大图
        },
        onfail: function(err) {
            err.err // 失败的字符串描述
        },
        onsuccess: function(data) {
            data.succ // bool 成功yes
        },
        listener: function (result) {
            result.page // int 页数, 从1开始。因base64缩略图可能数据过大,故使用分页机制返回数据
            result.total // int 返回照片数据的张数,当前只支持一张图片
            result.datas // json数组 [{“lid”:”lid1”, “thumb”:”BASE64”}]包含本地文件标识符lid和缩略图base64字符thumb(目前实现为一页只传一张图片数据)
        }
    });

3.BdHiJs.appnative.pic.pickPics 选择图片

    BdHiJs.appnative.pic.pickPics({
        data: {
            thumb: 1, // int,是否需要返回base64缩略图,1为返回, 0为不返回,默认不返回
            original: 1, // int,是否拍照直接上传原图。1 为上传原图,0为上传大图, 默认上传大图。大图本地压缩到1M内,影响上传速度看需求选择该参数,建议大图
            maxLimit: 9, // int,范围1-9, 最多选择的图片张数
        },
        onfail: function(err) {
            err.err // 失败的字符串描述
        },
        onsuccess: function(data) {
            data.succ // bool 成功yes
        },
        listener: function (result) {
            result.page // int 页数, 从1开始。因base64缩略图可能数据过大,故使用分页机制返回数据
            result.total // int 返回照片数据的张数,当前只支持一张图片
            result.datas // json数组 [{“lid”:”lid1”, “thumb”:”BASE64”}]包含本地文件标识符lid和缩略图base64字符thumb(目前实现为一页只传一张图片数据)
        }
    });

8.BdHiJs.appnative.pic.startUpload 执行图片上传任务

    BdHiJs.appnative.pic.startUpload({
        data: {
            lids: [lid, lid2] // json格式,文件信息(要上传的图片lid或者失败需要重试的图片lids)
        },
        onfail: function(err) {
            err.err // 失败的字符串描述
        },
        onsuccess: function(data) {
            data.succ // 成功开始上传
        }
    });

9.BdHiJs.appnative.pic.addUploadStatusListener 图片上传监听

    BdHiJs.appnative.pic.addUploadStatusListener({
        data: {
            lids: [lid, lid2] // json数组,本地文件唯一标示
        },
        onfail: function(err) {
            err.err // 操作失败,返回状态信息
        },
        onsuccess: function(data) {
            data.succ // bool 操作成功处理
        },
        listener: function (result) {
            result.lid // string 本地唯一标识
            result.fid // stirng 服务器唯一标识,上传完成返回
            result.fmd5 // string 文件md5,用于下载,上传完成返回
            result.taskid // int 上传任务ID,用于下载,上传完成返回
            result.progress // int 返回上传进度,0-100
            result.status // int 文件状态必选
            // 0 ready 已准备好
            // 1 progress 上传中
            // 2 success 上传完成
            // -1 notexist 文件不存在
            // -2 suspended 上传被暂停
            // -3 cancelled 上传被取消
            // -4 failed 上传失败
        }
    });

10.BdHiJs.appnative.pic.removeUploadStatusListener 图片上传监听移除

    BdHiJs.appnative.pic.removeUploadStatusListener();

11.BdHiJs.appnative.pic.getUploadStatus 图片上传状态查询

    BdHiJs.appnative.pic.addUploadStatusListener({
        data: {
            lids: [lid, lid2] // json数组,本地文件唯一标示
        },
        onfail: function(err) {
            err.err // 操作失败,返回状态信息
        },
        onsuccess: function(data) { 
            //返回参数data为json数组
            result.lid // string 本地唯一标识
            result.fid // stirng 服务器唯一标识,上传完成返回
            result.fmd5 // string 文件md5,用于下载,上传完成返回
            result.taskid // int 上传任务ID,用于下载,上传完成返回
            result.progress // int 返回上传进度,0-100
            result.status // int 文件状态必选
            // 0 ready 已准备好
            // 1 progress 上传中
            // 2 success 上传完成
            // -1 notexist 文件不存在
            // -2 suspended 上传被暂停
            // -3 cancelled 上传被取消
            // -4 failed 上传失败
        }
    });

文件

1.BdHiJs.appnative.file.getStatus 获取文件状态

    BdHiJs.appnative.file.getStatus({
        data: {
            fids: [lid, lid2], // 必选 json数组,文件信息。BdHiJs.sdk.version.get() >= 16,data支持js对象
        },
        onfail: function(err) {
            err.err // 操作失败 返回状态信息
        },
        onsuccess: function(data) { 
            // 返回参数data为json数组 
            [
                {
                    "fid": "fid1", 
                    "status": 0
                },
                {
                    "fid": "fid2", 
                    "status": 1, 
                    "progress": 30
                }
            ]
            data.fid // string 必选, 本地唯一标示
            data.progress // int 返回上传进度,0-100
            data.status // int 文件状态 必选
            // 0 notexist 不存在
            // 1 downloading 下载中
            // 2 suspended 下载被暂停
            // 3 cancelled 下载被取消
            // 4 failed 下载失败
            // 5 cancelled 已经准备好
            // 6 failed 删除
        }
    });

2.BdHiJs.appnative.file.setStatusListener 监听文件状态变更

    BdHiJs.appnative.file.setStatusListener({
        data: {
            fids: [lid, lid2], // 必选 json数组,文件唯一标示信息。BdHiJs.sdk.version.get()>= 16,data支持js对象
            progress_step:1 // 可选 int 下载进度步长,如流在文件下载进度的变更大于等于此值时,才会告知web app 取值范围为1~100,默认为1
        },
        onfail: function(err) {
            err.err // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功
        },
        listener: function (result) { 
            // listener中的result为json数组
            result.lid // string 必选, 本地唯一标示
            result.progress // int 必选,返回进度,0-100
            result.status // int 文件状态必选
            // 0 notexist 不存在
            // 1 downloading 下载中
            // 2 suspended 下载被暂停
            // 3 cancelled 下载被取消
            // 4 failed 下载失败
            // 5 cancelled 已经准备好
            // 6 failed 删除
        }
    });

3.BdHiJs.appnative.file.removeStatusListener 移除监听

    BdHiJs.appnative.file.removeStatusListener();

4.BdHiJs.appnative.file.viewContent 浏览文件内容

    BdHiJs.appnative.file.viewContent({
        data: { 
            // 要浏览的文件信息
            fid : “123”, // 必选 string,文件唯一标示信息。BdHiJs.sdk.version.get()>= 16,data支持js对象
            name: “贴吧“ // 必选 string,主文件名(不包含后缀)
            extension :“apk” // 必选 string,文件扩展名,目前只支持小写字母,且不要带『.』。
            thumbnail_url :"https://" // 可选 stirng,文件缩略图下载地址
            download_url : "https://" // 必选 string,文件下载地址
            download_params : "\" // 可选 json字典,从download_url下载文件所需的参数
            file_size : 1111 // 必选 long,文件大小
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        }
    });

5.BdHiJs.appnative.file.openList 打开文件列表

    BdHiJs.appnative.file.openList({ 
        // 通过此接口,浏览如流内已下载好的文件列表。
        onfail: function() {
            // 操作失败 返回状态信息
        },
        onsuccess: function() {
            // 操作成功 如流开始处理
        }
    });

6.BdHiJs.appnative.file.chooseFile 文件选择器

    BdHiJs.appnative.file.chooseFile({
        data: {
            accept: ["png", "jpg"], // 可选,Array。指定显示文件的类型,不指定时则显示所有的文件。
            multiple: 1, // 可选,Number。最多允许选择几个文件。默认为1个,最大100个。
            thumb : "1", // 可选,String。是否需要缩略图。"1": 需要;"0": 不需要。
            maxSize: 1 // 可选,Number。单个文件允许的最大大小,单位为M。默认为300M,最大300M。
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功,如流开始处理
        },
        onComplete: function(data) {
            // 用户选择完毕,返回文件信息
            data.code // 必填,Number。错误码。200:成功。
            data.error // 可选,String。错误信息。
            data.files // 必选,Array。用户选择的文件列表。
            // files 元素属性如下
            data.files[0].fileID // 必填,String。文件在如流客户端本地的ID,用于file相关接口唯一标识文件。
            data.files[0].fileName // 必填,String。文件名
            data.files[0].fileSize // 必填,Number。文件大小,单位是byte
            data.files[0].md5 // 必填,String。文件MD5
            data.files[0].sha256 // 必填,String。文件SHA256
            data.files[0].mime // 可选,String。文件类型,保留字段,暂时没有用
            data.files[0].thumbBase64 // 可选,String。文件缩略图。
            data.files[0].code // 必填,Number。文件错误码。code: 200(成功) | 404(文件不存在) | 400(未知错误)
            data.files[0].error // 可选,String。文件错误信息。code为404和400的情况下需要返回这个key,200不返回
        },
    });

7.BdHiJs.appnative.file.download 文件下载

    BdHiJs.appnative.file.download({
        data: {
            url:
            referenceCount:
            name:
            size:
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onReady: function(data) {
        },
        onProgress: function(data) {
        },
        onComplete: function(data) {
        }
    });

8.BdHiJs.appnative.file.upload 文件上传

    BdHiJs.appnative.file.upload({
        data: {
            fileID: 'fafa', // 必填,String,要上传的本地文件唯一标识。
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onReady: function(data) {
            // 生成任务,准备上传
            data.taskID: 'hsda' // 必填,字符串,本次任务的唯一标识
        },
        onProgress: function(data) {
            // 上传进度回调
            data.taskID: 'hsda', // 必填,字符串,本次任务的唯一标识
            data.progress: 0.36, // 必填,浮点数,任务当前进度 0.00 ~ 1.00
            data.speed: 200 // 必填,整数,当前上传速度,单位是 byte/s
        },
        onComplete: function(data) {
            // 上传结束
            data.fileID: 'fafa', // 必填,字符串,本地文件唯一标识。
            data.taskID: 'hsda', // 必填,字符串,上传任务唯一标识。
            data.fid: 'asdlf', // 必填,字符串,文件在服务端的唯一标识。应用方通过此凭证去服务端下载
            data.fmd5: 'dfafa', // 必填,字符串,文件在服务端的唯一标识。应用方通过此凭证去服务端下载
            data.code: 200, // 必填,整数,错误码。200 成功;202 暂停;203 取消;401 失败
            data.error: '' // 必填,字符串,错误描述
        }
    });

9.BdHiJs.appnative.file.resumeTask 恢复任务

    BdHiJs.appnative.file.resumeTask({
        data: {
            taskID:
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onReady: function(data) {
        },
        onProgress: function(data) {
        },
        onComplete: function(data) {
        }
    });

10.BdHiJs.appnative.file.taskStatus 任务状态查询

    BdHiJs.appnative.file.taskStatus({
        data: {
            taskID:
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onComplete: function(data) {
        }
    });

11.BdHiJs.appnative.file.cancelTask 任务取消

    BdHiJs.appnative.file.cancelTask({
        data: {
            taskID:
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onComplete: function(data) {
        }
    });

12.BdHiJs.appnative.file.open 打开本地文件

    BdHiJs.appnative.file.open({
        data: {
            fileID:
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onComplete: function(data) {
        }
    });

13.BdHiJs.appnative.file.exist 判断本地文件是否存在

    BdHiJs.appnative.file.exist({
        data: {
            fileID:
        },
        onfail: function(err) {
            // 操作失败 返回状态信息
        },
        onsuccess: function(data) {
            // 操作成功 如流开始处理
        },
        onComplete: function(data) {
        }
    });

14.BdHiJs.appnative.file.pendingListener 待处理文件监听

    function onBdHiJsReady() {
        // BdHiJs.sdk.version.get() >= 19 新增
        BdHiJs.appnative.file.pendingListener = function (data) {
            data.files // 文件列表
            data.files[0].fileName // 文件名
            data.files[0].fileSize // 文件大小,单位是byte
            data.files[0].md5 // 文件md5
            data.files[0].sha256 // 文件sha256
            data.files[0].mime // 文件类型,保留字段,暂时没有用
            data.files[0].fileID // 可选,String,文件本地唯一标识。应用方需要使用 file.upload 接口上传文件。fileID 和 sessionID 必有其一。
            data.files[0].sessionID // 可选,String,文件(图片消息、文件消息)从如流服务器获取的临时授权标识。如果存在,应用方无需再使用 file.upload 上传文件,可以直接从如流服务器下载。fileID 和
            sessionID 必有其一。
            data.files[0].ownerID // 可选,String,文件所属联系人的唯一标识(imid)
            data.files[0].ownerName // 可选,String,文件所属联系人的名字
        }
    }

二维码

1.BdHiJs.appnative.qrcode.getQrCode 打开二维码/条形码

    // 默认支持二维码识别。
    // BdHiJs.sdk.version.get() >= 19 ,支持了条形码识别。
    BdHiJs.appnative.qrcode.getQrCode({
        listener: function (qrCodeString) {
            // 通过qrCodeString属性读取出来的字符串
        }
    });

2.BdHiJs.appnative.qrcode.getQrCodeCamera 打开二维码相机,不返回应用处理结果,由如流处理识别结果(不支持条形码)

    // BdHiJs.sdk.version.get() >= 22
    BdHiJs.appnative.qrcode.getQrCodeCamera();

AR

1.BdHiJs.appnative.ar.run 运行 AR

    BdHiJs.appnative.ar.run({
        data: {
            "type": "0", 
            // 必填,字符串,AR类型。"0":未知,根据key在线拉取;"6":在手机端进行图像识别检索。
            "key": "10001391", // type为"0"时必填,字符串,AR服务标识。
        },
        onfail: function(err) {
            // 如果是硬件不支持,应用方不需要处理,客户端会做好用户提示
        },
        onsuccess: function() {
            // 已显示 AR 界面
        },
        listener: function(data) {
            // 用户点击交互元素之后,AR SDK 即刻停止工作,因此客户端在回调 listener 之后,会移除 AR 视图界面
            data.url // 必选,字符串,用户点击结果。AR场景中,如果存在可交互元素,用户点击后,会返回点击结果。应用方可以使用新窗口打开该地址。
            data.data // 作用与 data.url 相同。当 data.url 获取失败时,可以尝试使用 data.data 获取。(iOS端在 BdHiJs.sdk.version.get()<= 15 版本,使用的 data 命名)
        }
    });

语音识别

1.BdHiJs.appnative.asr.startRecognize 开始识别用户语音

    BdHiJs.appnative.asr.startRecognize({
        data: {
            // 语音输入模型的相关参数。该服务为定制化服务,如果需要,请联系客服同学。
            // 不填写则使用通用的语音识别模型
            app_id: "10000", // 可选,认证相关,app_id,pid,app_key必须一起填写
            pid: "10000", // 可选,认证相关,app_id,pid,app_key必须一起填写
            app_key: "xxx.xxxxx.xx.xxxxxx", // 可选,认证相关,app_id,pid,app_key必须一起填写
            url: "https://vse.baidu.com/v2" // 可选,认证相关,如果未上线,请填写测试服务地址
        },
        onfail: function(err) {
            // 如果是硬件不支持,应用方不需要处理,客户端会做好用户提示
        },
        onsuccess: function() {
            // 开始识别
        },
        listener: function(data) {
            // 通知用户语音识别内容
            data.status // 必填,整数,识别状态。1:识别中;2:识别成功;3:异常终止(见errCode);成功与否使用此字段,不能使用errCode。errCode为可选可能没有
            // BdHiJs.sdk.version.get() >= 16 时新增 6:用户主动停止(调用了BdHiJs.appnative.asr.stopRecognize);7:用户主动取消(BdHiJs.appnative.asr.cancelRecognize)
            data.result // 可选,字符串,识别结果。
            data.pinyin // 可选,字符串,识别结果的拼音。拼音不带音调,空格分隔。
            data.errCode // 可选,整数,异常终止的原因。1:没有麦克风权限;2:录音设备不可用;3:当前网络不可用;4:录音中断(来电等);5:服务异常(SDK繁忙等);6:没有安装语音插件(安卓专用)
        }
    });
    // 调用 stopRecognize 后,如果已录制语音的识别尚未结束,会继续触发『识别成功』状态。
    // 在没有调用 stopRecognize 和 cancelRecognize 时,如果用户停止说话,也会临时触发『识别成功』状态,然后继续识别用户语音。
    // 如果调用方想实现自动识别用户短语音,可以在监听到 status = 2(识别成功)后,直接调用stopRecognize 停止识别。

2.BdHiJs.appnative.asr.stopRecognize 停止识别用户语音

    BdHiJs.appnative.asr.stopRecognize({
        onfail: function(err) {
        },
        onsuccess: function() {
            // 停止识别
        }
    });
    // 调用该接口后,语音会立即停止录制,但已录制语音的识别不一定立刻结束,可能需要一点时间。
    // 请在 startRecognize 的 listener 中等待『用户主动停止』。

3.BdHiJs.appnative.asr.cancelRecognize 取消识别用户语音

    BdHiJs.appnative.asr.cancelRecognize({
        onfail: function(err) {
        },
        onsuccess: function() {
            // 取消识别
        }
    });
    // 调用该接口后,语音会立即停止录制,但已录制语音的识别不一定立刻结束,可能需要一点时间。
    // 请在 startRecognize 的 listener 中等待『用户主动取消』。

语音合成

1.BdHiJs.appnative.tts.startSpeak 语音播报

    BdHiJs.appnative.tts.startSpeak({
        data: {
            "text": "xxxx", // 不清楚字段含义 BdHiJs.sdk.version.get() >= 16,data支持js对象
            "gender": "xxx",
        },
        listener: function(data) {
            data.status
        }
    });

2.BdHiJs.appnative.tts.cancelSpeak 取消播报

    BdHiJs.appnative.tts.cancelSpeak();