得力e+ APP接入协议

文档目标

本文档用于描述基于HTML5网页形式的第三方云应用服务接入得力e+ APP,如何通过JS API接口与原生APP进行交互.

适用范围

所有基于HTML5形式的第三方云应用开发人员均可通过本文档了解得力e+ APP开放的JS API接口功能以及调用方法.

接入说明

接入基于HTML5网页形式的第三方云应用时,得力e+ APP的网页视图(WebView)的请求头(Request Header)会被写入如下基础参数,作为进入应用的基础数据提供给第三方云应用服务端:

  • user_id

当前进入第三方云应用的用户的id

  • org_id

当前进入第三方云应用的用户所在组织的id。用户可能属于多个组织,此参数表示用户进入当前应用时选择的组织id

  • token

当前用户使用的数据校验token

  • uuid

当前用户使用手机的唯一识别码

并且根据得力e+ APP不同场景下对于云应用的使用,还会写入其他可选参数,例如:_d_from,_d_data

  • _d_from

当前用户进入第三方云应用的方式, 有如下几种可能(会持续增加)

  • qrCode:表示从二维码扫描进入

  • device_sn: 表示从设备的sn码进入

  • device_id: 表示从设备的id码进入

  • _d_data

当前用户进入第三方云应用的附带数据

  • 当_d_from为qrCode时,表示扫描到的二维码的文本数据

  • 当_d_from为device_sn时,表示为设备的sn

  • 当_d_from为device_id时,表示为设备的id

使用简介

  • 1. 页面引入JS文件

在需要调用JS接口的页面引入delicloud.min.js文件,引入地址如下:

测试: http://t.static.delicloud.com/h5/sdk/delicloud.min.js

线上: http://static.delicloud.com/h5/sdk/delicloud.min.js

备注:引入JS后会得到全局变量 deli ,支持使用AMD/CMD标准模块加载方法加载.

  • 2. JSAPI初始化配置

  • JSAPI初始化过程

    • 注册应用,应用服务端从得力云平台获取appIdappKey,其中appKey是私密信息,应保存在应用服务器中,不得公开;
    • 应用服务端在页面初始化时根据平台提供的签名算法和私密信息计算签名(具体算法见下一小节),并将签名结果和生成签名的原参数返回给前端页面;
    • 前端页面调用deli.config配置接口输入应用服务器传递过来的签名信息进行平台授权验证; 注意,deli.config不要重复配置;
    • 平台验证应用服务器的签名信息并返回验证结果.如果验证失败,SDK会调用deli.error方法返回错误信息,否则会调用deli.ready,SDK初始化完成.

  • JSAPI初始化签名算法

第三方应用服务使用得力云提供的JSAPI时需要验证其调用身份.验证方法是采用简单的签名算法来完成.由于appKey是平台和应用服务之间的私密信息,通过采用相同的appKey计算出来的签名如果一致,则可证明应用服务的合法性. 签名生成的规则如下:

var keyArray = sort(noncestr,timestamp,appId,appKey);
var str = assemble(keyArray);
var signature = md5(str);

参与签名的字段包括在上文中获取的appId, noncestr(随机字符串),timestamp(当前时间戳,具体值为当前时间到1970年1月1号的秒数). 具体的计算过程描述如下:

步骤1. sort()含义为对所有待签名参数按照字段名的ASCII码从小到大排序(字典序);
步骤2. assemble()含义为根据步骤1中获的参数字段的顺序,使用键值对的格式(即key1=value1&key2=value2…)拼接成字符串;
步骤3. md5()的含义为对在步骤2拼接好的字符串进行md5加密.
  • 3. SDK初始化

deli.config是所有需要使用JS-SDK的页面首先需要调用的初始化配置操作.如果配置验证不成功,后续所有接口将无法使用.(注意,同一个url仅需调用一次)

deli.config({
    appId : "", //必填,应用ID
    timestamp : "", //必填,生成签名的时间戳
    noncestr : "", //必填,生成签名的随机字符串
    signature : "", //必填,签名
    jsApiList : []  //必填,所有需要使用的JS接口名称列表,JS接口名称在章节三中,例如:"["common.navigation.setTitle","common.navigation.setRight","common.navigation.close"]".
})
  • deli.config调用成功后,SDK会自动调用deli.ready方法表示SDK已初始化完毕,可以开始使用SDK的API接口.该方法定义如下:
deli.ready(function(){
    // deli.ready 参数为回调函数,在环境准备就绪时触发,
    //jsapi的调用需要保证在该回调函数触发后调用,否则无效.
});
  • deli.config如果验证失败,则自动调用deli.error方法,SDK初始化失败并返回具体的错误信息. 该方法定义如下:
deli.error(function(resp){
    // config信息验证失败会执行error函数,
    //如签名过期导致验证失败,可以在返回的resp参数中查看参数内容并和生成签名参数做对比,找出错误的参数
    { "code" : "错误码", "msg" : "错误信息描述" }
});
  • 4. 其它说明

    • 所有接口都通过deli对象来调用;
    • 所有接口都为异步;
    • 所有接口的调用方式是都是统一的,由三个参数组成.第一个参数是一个object类型,表示请求参数信息,第二个参数是成功回调函数,第三个参数是失败回调函数.示例如下:
deli.module(模块分类).function(功能).method(方法)(
    {}, //第一个参数,object类型
function(data){
    //第二个参数,成功回调
},function(resp){
    //第三个参数,失败回调
});

成功时返回接口响应数据,不同接口格式不同,具体见各个接口定义. 失败时返回失败的错误码和错误信息描述,默认响应格式如下:

{
    "code": -1,
    "msg": "权限校验失败"
}

响应参数说明如下:

响应参数 说明
code 错误码,具体错误码列表见末尾
msg 错误信息描述

接口定义

以下接口为得力JS SDK目前开放的所有接口列表,包括通用API接口和与得力云平台业务相关的业务API接口两大类.

  • 通用接口(common)

  • 设置标题(common.navigation.setTitle)

    应用使用过程中,需要修改导航栏标题时调用;

deli.common.navigation.setTitle({
    "title":"页面标题" //页面标题
}, function(data){}, function(resp){});

请求参数说明如下:

请求参数 说明
title 页面标题

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 设置右侧导航(common.navigation.setRight)

    应用使用过程中,需要修改右侧导航文字,设置导航为图标;
deli.common.navigation.setRight({
    "text": "确认",   //文字
    "icon":"http://www.delicloud.com/logo.png"//图标url
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
text 显示文字,请确保text与icon不同时存在,如果同时存在默认显示text
icon 显示图标,请确保text与icon不同时存在,如果同时存在默认显示text

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 关闭webview(common.navigation.close)

    应用使用过程中,需要直接关闭webview返回原生入口时调用,
deli.common.navigation.close({},function(data){},function(resp){});

该方法无请求参数和回调函数.

  • 显示导航栏(common.navigation.show)

    应用使用过程中,需要显示导航栏并且竖屏时调用,
deli.common.navigation.show({},function(data){},function(resp){});

该方法无请求参数和回调函数.

  • 关闭导航栏(common.navigation.hide)

    应用使用过程中,需要关闭导航栏并且横屏时调用,
deli.common.navigation.hide({},function(data){},function(resp){});

该方法无请求参数和回调函数.

  • 页面后退(common.navigation.goBack)

    应用使用过程中,页面后退时调用;
deli.common.navigation.goBack({
    "isGoBack": true,   //是否返回
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
isGoBack 是否返回, 默认为true, true表示执行返回操作, false表示中断返回操作

正确时返回示例如下:

{
    "isGoBack": true
}

响应参数说明如下:

响应参数 说明
isGoBack 是否返回, 默认为true, true表示执行返回操作并且执行回调函数, false表示中断返回操作并且处理业务需要的逻辑(如重定向到指定的页面)

失败时返回具体错误码和错误描述.

  • 显示loading(common.notification.showPreloader)

    应用使用过程中,需要显示loading时调用;
deli.common.notification.showPreloader();

该方法无请求参数和回调函数.

  • 关闭loading(common.notification.hidePreloader)

    应用使用过程中,需要关闭loading时调用;
deli.common.notification.hidePreloader();

该方法无请求参数和回调函数.

  • 提示toast(common.notification.toast)

    应用使用过程中,需要提示文本信息时调用;
deli.common.notification.toast({
    "text": "提示信息",
    "duration": 2
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
text 提示信息
duration 非必填,提示信息显示时间,单位为秒

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 状态提示prompt(common.notification.prompt)

    应用使用过程中,需要提示带有状态图标的文本信息时调用;
deli.common.notification.prompt({
    "type": "success",
    "text": "提示信息",
    "duration": 2
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
type 提示类型,包括success,error,warning,loading
text 提示信息
duration 非必填,提示信息显示时间,单位为秒

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 显示模态框(common.modal.show)

    应用使用过程中,需要使用模态框时调用;
deli.common.modal.show({
    "type": "confirm",
    "title": "标题",
    "content": "我是一条长度为12的内容"
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
type 模态框类型,包括confirm, alert, prompt
title 模态框标题
content 模态框内容

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 保存图片(common.image.save)

    应用需要保存图片时调用, 可将网络图片保存到手机相册;
deli.common.image.save({},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
url 网络图片地址

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 选择手机图片(common.image.choose)

    应用需要拍照或从手机相册中选择图片时调用;
deli.common.image.choose({},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
types 选择图片的方式, 拍照或从手机相册中选择图片, types包含"photo", "camera"
multiple 是否支持多选,默认为false
max 限制最大的选择图片数量,当选择图片支持多选时,默认为9

正确时返回结果如下:

[{
    "file_id": "",
    "file_name": "",
    "file_size": "",
    "file_type": "",
    "file_data": ""
}]

响应参数说明如下:

响应参数 说明
file_id 文件编号
file_name 文件名称
file_size 文件大小,单位为Byte
file_type 文件格式
file_data 文件数据

失败时返回具体错误码和错误描述.

  • 上传图片(common.image.upload)

    应用需要上传图片时调用,可拍照或从手机相册中选择上传;
deli.common.image.upload({
    "type": "album" //从相册中选择
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
type 非必填,上传图片方式.album表示仅从相册选择,camera表示仅支持相机拍照,未填写则表示均支持

正确时返回示例如下:

{
    "url": "base64" 
}

响应参数说明如下:

响应参数 说明
url 返回图片BASE64格式编码

失败时返回具体错误码和错误描述.

  • 预览图片(common.image.preview)

    应用需要预览图片时调用;
deli.common.image.preview({
    "current": 0,
    "urls":[
    "http://www.nbdeli.com/formwork/default/images/case-new-1.jpg",
    "http://www.nbdeli.com/formwork/default/images/case-li-img.jpg",
    "http://www.nbdeli.com/formwork/default/images/case-li-img4.jpg",
    "http://www.nbdeli.com/formwork/default/images/case-li-img3.jpg"
    ]//图片地址列表
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
current 非必填,预览图片索引,默认从0开始
urls 图片地址列表

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 选择手机文件(common.file.choose)

    应用需要选择手机文件时调用;
deli.common.file.choose({},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
types 支持选择文件的类型
max_size 支持选择文件的字节大小

正确时返回结果如下:

[{
    "file_id": "",
    "file_name": "",
    "file_size": "",
    "file_type": "",
    "file_data": ""
}]

响应参数说明如下:

响应参数 说明
file_id 文件编号
file_name 文件名称
file_size 文件大小,单位为Byte
file_type 文件格式
file_data 文件数据

失败时返回具体错误码和错误描述.

  • 上传文件(common.file.upload)

    应用需要上传文件时调用;
deli.common.file.upload({},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
url 上传文件的服务器接口地址
file 上传的文件
isShowProgress 是否显示上传进度条,默认为false

正确时返回服务器接口自定义的结果.

失败时返回具体错误码和错误描述.

  • 查看地理位置(common.location.open)

    应用需要原生内置地图查看地理位置时调用;
deli.common.location.open({
    "latitude": "30.50",
    "longitude": "114.33",
    "name": "武汉市",
    "address": "武汉市洪山区",
    "scale": "18"
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
latitude 纬度,浮点数,范围为90~-90
longitude 经度,浮点数,范围为180~-180
name 位置名
address 详情地址说明
scale 地图缩放级别.整形值,范围从1~28.默认为16

正确时原生内置地图显示地理位置信息(无返回内容), 失败时返回具体错误码和错误描述.

  • 获取地理位置(common.location.get)

    应用需要原生内置GPS获取地理位置时调用;
deli.common.location.get({},function(data){},function(resp){});

正确时返回示例如下:

{
    "latitude": "",
    "longitude": "",
    "name": "" ,
    "address": "" 
}

响应参数说明如下:

响应参数 说明
latitude 纬度,浮点数,范围为90~-90
longitude 经度,浮点数,范围为180~-180
name 位置名
address 详情地址说明

失败时返回具体错误码和错误描述.

  • 分享(common.message.share)

    应用需要通过原生APP分享内容时调用;
deli.common.message.share(
{
    "text": "自定义对话框标题文本",
    "title": "消息标题",
    "desc": "分享内容",
    "link": "http://www.delicloud.com/",
    "img_url": "http://www.delicloud.com/logo.png"
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
text 非必填,自定义对话框标题文本,默认为"选择分享方式"
title 分享标题
desc 分享内容
link 分享链接URL
img_url 分享图片URL

正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 保持屏幕唤醒状态(common.screen.keepAwake)

    应用使用过程中,需要保持屏幕唤醒状态时调用;
deli.common.screen.keepAwake();

该方法无请求参数; 正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 关闭保持屏幕唤醒状态(common.screen.breakAwake)

    应用使用过程中,需要关闭保持屏幕唤醒状态时调用;
deli.common.screen.breakAwake();

该方法无请求参数和回调函数.

  • 手机震动(common.phone.vibrate)

deli.common.phone.vibrate();

该方法无请求参数和回调. 调用成功后,自动触发手机进行震动.

  • 获取网络类型(common.connection.getNetworkType)

deli.common.connection.getNetworkType({},function(data){},function(resp){});

无请求参数, 正确时返回示例如下:

{
    "network_type": "wifi",
}

响应参数说明如下:

响应参数 说明
network_type 返回网络类型,包括:no(无网络),unknow(未知网络),2g,3g,4g,wifi

失败时返回具体错误码和错误描述.

  • 获取手机唯一识别码(common.phone.getUUID)

deli.common.phone.getUUID({},function(data){},function(resp){});

无请求参数, 正确时返回示例如下:

{
    "uuid": "uuid123456"
}

响应参数说明如下:

响应参数 说明
uuid 手机唯一识别码UUID

失败时返回具体错误码和错误描述.

  • 获取手机接入的热点信息(common.phone.getInterface)

deli.common.phone.getInterface({},function(data){},function(resp){});

无请求参数, 正确时返回示例如下:

{
    "ssid": "DELI",
    "local_mac": "",
    "local_ip": "",
    "mac": "a0:ab:1b:6e:f2:38",
    "ip": "" 
}

响应参数说明如下:

响应参数 说明
ssid 热点名称
local_mac 手机mac地址
local_ip 手机ip地址
mac 热点设备mac地址
ip 热点设备ip地址

失败时返回具体错误码和错误描述.

  • 获取手机基础信息(common.phone.getBaseInfo)

deli.common.phone.getBaseInfo({},function(data){},function(resp){});

无请求参数, 正确时返回示例如下:

{
    "product": "",
    "model": "",
    "version": "",
    "screenWidth": "",
    "screenHeight": "" 
}

响应参数说明如下:

响应参数 说明
product 品牌
model 型号
version 版本号
screenWidth 屏幕宽度(px)
screenHeight 屏幕高度(px)

失败时返回具体错误码和错误描述.

  • APP业务接口(app)

  • 扫码(app.code.scan)

    应用如果需要使用原生扫码功能, 可调用本接口弹出原生扫码窗口;

deli.app.code.scan({},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
type 非必填,扫码类型.barcode表示仅支持条形码,qrcode表示仅支持二维码,未填写则表示均支持

正确时返回示例如下:

{
    "text": ""
}

响应参数说明如下:

响应参数 说明
text 扫码内容

失败时返回具体错误码和错误描述.

  • 选择网盘文件(app.disk.choose)

    应用需要选择网盘文件时调用;
deli.app.disk.choose({},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
types 支持选择网盘文件的类型

正确时返回结果如下:

[{
    "file_id": "",
    "file_name": "",
    "file_size": "",
    "file_type": "",
    "file_data": ""
}]

响应参数说明如下:

响应参数 说明
file_id 文件编号
file_name 文件名称
file_size 文件大小,单位为Byte
file_type 文件格式
file_data 文件数据

失败时返回具体错误码和错误描述.

  • 添加智能设备(app.device.bind)

    应用使用过程中, 需要添加并绑定新的智能设备时调用;
deli.app.device.bind({},function(data){},function(resp){});

无请求参数. 添加设备完成后, 正确时返回示例如下:

{
    "device_id": "10001",
    "name": "设备名",
    "product": "产品型号",
    "icon": "产品图标URL" 
}

响应参数说明如下:

响应参数 说明
device_id 设备ID
name 设备名称
product 产品型号
icon 产品图标

失败时返回具体错误码和错误描述.

  • 获取用户信息(app.user.get)

    应用需要获取用户信息时调用; 如果user_id为空,则返回当前用户信息.
deli.app.user.get({"user_id":349944153787858944},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
user_id 用户ID

正确时返回示例如下:

{
    "user":{
        "id": "349944153787858944" ,
        "name": "张三",
        "avatar": "http://static.delicloud.com/user/avatar.jpg",
        "gender": "1",
        "birthday": "1993-11-11",
    },
    "organization":[{
        "id": "349944153787858944",
        "name": "组织名称",
        "type": "组织类型:企业或个人",
        "icon": "组织图标URL",
        "is_admin": true
    }]
}

响应参数说明如下:

响应参数 说明
user 用户信息:
id:用户ID,
name:用户名称,
avatar:用户头像,
gender:用户性别,1是男性,0是女性,
birthday:用户生日
organization 所属组织信息:
id:所属组织ID,
name:所属组织名称,
type:组织类型,
icon:所属组织图标URL,
is_admin:是否是该组织管理员;

失败时返回具体错误码和错误描述.

  • 获取组织信息(app.organization.get)

    应用需要获取组织信息时调用; 如果org_id为空,则返回当前组织信息.
deli.app.organization.get({"org_id":349944153787858944},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
org_id 用户组织ID

正确时返回示例如下:

{
    "organization":{
        "id": "349944153787858944",
        "name": "组织名称",
        "type": "组织类型:企业或个人",
        "icon": "组织图标URL",
    }
}

响应参数说明如下:

响应参数 说明
organization 组织信息:
id:组织ID,
name:组织名称,
type:组织类型,
icon:组织图标URL

失败时返回具体错误码和错误描述.

  • 打电话(app.user.telephoneCall)

    应用使用过程中,需要打电话给某个指定用户时调用;
deli.app.user.telephoneCall(
    {"user_id": "362618666346348544"},
function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
user_id 用户ID

正确时自动拨通用户注册的用户号码, 失败时返回具体错误码和错误描述;

+#### 打开聊天会话(app.user.chatOpen)

deli.app.user.chatOpen(
    {"user_ids":["355672617635545088","362618666346348544"]},
function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
user_ids 参与聊天会话的用户ID列表

正确时弹出原生的聊天窗口, 失败时返回具体错误码和错误描述.

  • 选择企业通讯录中的人(app.user.select)

    应用如果需要选择组织中的人员,可调用本接口弹出原生组织通讯录窗口,从指定可选的顶级部门范围内选择,如未设置可选的顶级部门,则默认在组织的最顶级部门中选择;
deli.app.user.select({
    "title":"选择企业通讯录中的人",
    "mode":"multi", //多选
    "root_dept_id":"355671868335718401",//设置可选顶级部门的Id
    "max":200,  //选择人数限制
    "selected_user_ids":["355672617635545088","362618666346348544"],//已选的用户
    "disabled_user_ids":["355672596013907968","360009358211284992"]//禁止选择的用户
},
function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
title 页面标题
mode 必填,选择模式,single表示单选,multi表示多选
root_dept_id 设置可选顶级部门的ID
max 选择人数限制
selected_user_ids 默认已选择用户的ID列表. 如果默认选中的用户不在指定的顶级部门之下,则自动忽略
disabled_user_ids 禁止选择用户的ID列表

正确时返回示例如下:

[
    {
    "user_id": "355672596013907968",
    "name": "delicoud",
    "avatar": "http://static.delicloud.com/user/avatar.jpg",
    "empno": "100" 
    },
    {
    "user_id": "360009358211284992",
    "name": "delicoud2",
    "avatar": "http://static.delicloud.com/user/avatar.jpg",
    "empno": "" 
    }
]

响应参数说明如下:

响应参数 说明
user_id 用户ID
name 用户姓名
avatar 用户头像
empno 工号

失败时返回具体错误码和错误描述.

  • 选择企业通讯录中的部门(app.department.select)

    应用如果需要选择组织通讯录中的部门,可调用本接口弹出组织通讯录,从指定可选的顶级部门范围内选择,如未设置可选的顶级部门,则默认在组织的最顶级部门中选择;
deli.app.department.select({
    "title":"选择企业通讯录中的部门",
    "mode":"multi", //多选
    "root_dept_id":"355671868335718401",//设置可选顶级部门的Id
    "max":200,  //选择部门数限制
    "selected_dept_ids":["355671868335718404","355678628404527106"],//已选的部门
    "disabled_dept_ids":["355678628404527106","355678749540220928"]//禁止选择的部门
},
function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
title 页面标题
mode 必填,选择模式,single表示单选,multi表示多选
root_dept_id 设置可选顶级部门的ID
max 选择部门数限制
selected_dept_ids 默认已选择部门的ID列表,如果默认选中的部分不在设置的顶级部门之下,则自动忽略
disabled_dept_ids 禁止选择部门的ID列表

正确时返回示例如下:

[
    {
        "dept_id": "355671868335718401",
        "dept_name": "研发部",
    },
    {
        "dept_id": "355671868335718404",
        "dept_name": "设计部"
    }
]

响应参数说明如下:

响应参数 说明
dept_id 部门ID
dept_name 部门名称

失败时返回具体错误码和错误描述.

  • 初始化蓝牙模块, 开启查找周边蓝牙设备(app.bluetooth.startSearch)

    应用如果需要查找周边蓝牙设备,需要调用此方法开启,与app.bluetooth.stopSearch成对调用;
deli.app.bluetooth.startSearch({}, function(data){}, function(resp){});

该方法无请求参数; 正确时返回示例如下:

{
    statusCode:1,
    text:'打开成功'
}

响应参数说明如下:

响应参数 说明
statusCode 状态码, 1表示打开成功,2表示打开失败,3表示系统不支持打开
text 状态描述

失败时返回具体错误码和错误描述.

  • 关闭查找周边蓝牙设备 (app.bluetooth.stopSearch)

    应用如果需要关闭查找周边蓝牙设备,需要调用此方法关闭,与app.bluetooth.startSearch成对调用;
deli.app.bluetooth.stopSearch({}, function(data){}, function(resp){});

该方法无请求参数; 正确时返回示例如下:

{
    statusCode:1,
    text:'关闭成功'
}

响应参数说明如下:

响应参数 说明
statusCode 状态码, 1表示关闭成功
text 状态描述

失败时返回具体错误码和错误描述.

  • 获取本机蓝牙适配器状态 (app.bluetooth.getBluetoothAdapterState)

deli.app.bluetooth.getBluetoothAdapterState({},function(data){},function(resp){});

该方法无请求参数; 正确时返回示例如下:

{
    "discovering": true,
    "available": true
}

响应参数说明如下:

响应参数 说明
discovering 是否正在搜索设备
available 蓝牙适配器是否可用
  • 获取在蓝牙模块生效期间所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备(app.bluetooth.getBluetoothDevices)

    应用开启查找周边蓝牙设备后,需要获取在蓝牙模块生效期间所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备,可调用本接口弹出已查找到的设备列表;
deli.app.bluetooth.getBluetoothDevices({},function(data){},function(resp){});

该方法无请求参数; 正确时返回示例如下:

{
    "bluetooths":[
        {
          "name":"蓝牙名称",
          "deviceid":"FDA50693-A4E2-4FB1-AFCF-C6EB07647825",
          "advertisData":"",
          "advertisServiceUUIDs":"",
          "localName":"",
          "serviceData":"",
          "rssi":"66"
        },
        {
          "name":"蓝牙名称",
          "deviceid":"FDA50693-A4E2-4FB1-AFCF-C6EB07647825",
          "advertisData":"",
          "advertisServiceUUIDs":"",
          "localName":"",
          "serviceData":"",
          "rssi":"66"
        }
    ]
}

响应参数说明如下:

响应参数 说明
bluetooths 蓝牙信息:
name:蓝牙设备名称,某些设备可能没有,
deviceId:设备的 id,
advertisData:当前蓝牙设备的广播数据段中的ManufacturerData数据段,
advertisServiceUUIDs:当前蓝牙设备的广播数据段中的ServiceUUIDs数据段,
localName:当前蓝牙设备的广播数据段中的LocalName数据段,
serviceData:当前蓝牙设备的广播数据段中的ServiceData数据段,
rssi:接收信号的强度指示

失败时返回具体错误码和错误描述.

  • 开启查找周边ibeacon设备 (app.ibeacon.startSearch)

    应用如果需要查找周边ibeacon设备,需要调用此方法开启查找周边ibeacon设备;
deli.app.ibeacon.startSearch({}, function(data){}, function(resp){});

该方法无请求参数; 正确时返回示例如下:

{
    statusCode:1,
    text:'打开成功'
}

响应参数说明如下:

响应参数 说明
statusCode 状态码, 1表示打开成功,2表示打开后未关闭再次打开,3表示蓝牙未打开,4表示地理位置服务未打开,5表示系统不支持打开
text 状态描述

失败时返回具体错误码和错误描述.

  • 关闭查找周边ibeacon设备 (app.ibeacon.stopSearch)

    应用如果需要关闭查找周边ibeacon设备,需要调用此方法关闭查找周边ibeacon设备;
deli.app.ibeacon.stopSearch({}, function(data){}, function(resp){});

该方法无请求参数; 正确时返回示例如下:

{
    statusCode:1,
    text:'关闭成功'
}

响应参数说明如下:

响应参数 说明
statusCode 状态码, 1表示关闭成功
text 状态描述

失败时返回具体错误码和错误描述.

  • 获取查找到的周边ibeacon设备 (app.ibeacon.getSearch)

    应用开启查找周边ibeacon设备后,需要获取已查找到的周边ibeacon设备信息时,可调用本接口弹出已查找到的设备列表;
deli.app.ibeacon.getSearch({},function(data){},function(resp){});

该方法无请求参数, 正确时返回示例如下:

{
    "ibeacons":[
        {
            "uuid":"FDA50693-A4E2-4FB1-AFCF-C6EB07647825",
            "accuracy":"0.235344",
            "rssi":"-66",
            "proximity":"1"
        },
        {
            "uuid":"FDA50693-A4E2-4FB1-AFCF-C6EB07647825",
            "accuracy":"0.349124",
            "rssi":"-49",
            "proximity":"2"
        }
    ]
}

响应参数说明如下:

响应参数 说明
ibeacons ibeacons信息:
uuid:当前用户使用手机的唯一识别码,
accuracy:距离,单位为米,
proximity:精度,0:CLProximityUnknown, 1:CLProximityImmediate, 2:CLProximityNear, 3:CLProximityFar,
rssi:接收信号的强度指示
失败时返回具体错误码和错误描述.
  • 获取本地数据缓存(app.storage.get)

    应用需要从本地缓存中获取指定 key 对应的内容时调用
deli.app.storage.get({
  "key": "name"
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
key 本地缓存中的指定的 key

正确时返回结果如下:

{
    "data": "张三"
}

响应参数说明如下:

响应参数 说明
data 本地缓存中的指定的 key对应的内容

失败时返回具体错误码和错误描述.

  • 获取本地数据缓存的相关信息(app.storage.getInfo)

    应用需要获取本地数据缓存的相关信息时调用
deli.app.storage.getInfo({},function(data){},function(resp){});

该方法无请求参数;

正确时返回结果如下:

{
    "keys": ["id", "name", "avatar", "gender", "birthday"],
    "size": 1024,
    "limit": 10240
}

响应参数说明如下:

响应参数 说明
keys 当前本地缓存所有的key
size 当前占用的空间大小, 单位kb
limit 限制的空间大小,单位kb

失败时返回具体错误码和错误描述.

  • 设置本地数据缓存(app.storage.set)

    应用如果需要使用原生本地缓存存储数据, 可调用本接口将数据存储在本地缓存中指定的 key 中, 并会覆盖掉原来该 key 对应的内容。
deli.app.storage.set({
  "key": "name"
  "data": "张三"
},function(data){},function(resp){});

请求参数说明如下:

请求参数 说明
key 本地缓存中的指定的 key
data 需要存储的内容
正确时无返回内容, 失败时返回具体错误码和错误描述.
  • 删除本地数据缓存(app.storage.remove)

    应用需要从本地缓存中删除指定 key 对应的内容时调用
deli.app.storage.remove({},function(data){},function(resp){});

该方法无请求参数; 正确时无返回内容, 失败时返回具体错误码和错误描述.

  • 清理本地数据缓存(app.storage.clear)

    应用需要清理本地缓存所有内容时调用
deli.app.storage.clear({},function(data){},function(resp){});

该方法无请求参数; 正确时无返回内容, 失败时返回具体错误码和错误描述.

其它

  • 错误码定义列表(待定义)

错误码 错误码说明
-1 权限校验失败
-2 参数错误
-3 网络错误
-4 未知错误
  • 更新日志

1.0 (2017-10-26)

  • 发布1.0线上版本

1.01 (2018-02-07)

  • 新增部分接口,完善文档

1.02 (2018-03-13)

  • 新增接入说明,完善文档

1.04 (2018-05-16)

  • 新增蓝牙、ibeacon、数据存储等接口,完善文档

1.05 (2018-10-20)

  • 新增获取手机基础信息、保存图片、文件上传、选择网盘文件等接口,完善文档