yiyun-app-sdk
v1.3.7
Published
YiYun App SDK
Downloads
4
Readme
子应用API 介绍
通过script方式引入
文件地址:http://dl-mobileres.effio.cn/yiyun.min.js
<script src="./yiyun.min.js"></script>
例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./yiyun.min.js"></script>
</head>
<body>
...
<script>
YiYun.onLoad(() => {
config = YiYun.getConfig();
result.textContent = `config: ${JSON.stringify(config)}`;
});
YiYun.onBack(() => {
result.textContent = `回退按钮已触发 ${new Date()}`
});
document.getElementById('openUrl').onclick = async function openUrl() {
YiYun.openUrl('https://www.douban.com');
};
document.getElementById('closeApp').onclick = function closeApp() {
YiYun.closeApp();
};
...
</script>
</body>
</html>
通过npm安装
npm install yiyun-app-sdk
获取登陆 Authorization 等参数
import {onLoad, getConfig} from 'yiyun-app-sdk'
onLoad(() => {
let config = getConfig();
})
只有在onLoad的回调被调用之后,getConfig()才会返回值。
config 为以下格式
{
authToken, // 字符串,登陆 Authorization 值
userTypes, // 字符串数组,原来的jurisdictions值按逗号分割
route, // 页面所需要处理的路由
memberId, // 字符串,用户在当前企业下的成员id
organizationId, // 字符串,当前企业的id,
memberToken, // 字符串,成员的token
qrCodeParams, // 字符串对象,相关二维码事件跳转进来带的参数,
priceLevel, // 应用的版本
}
获取用户信息
import {getUserInfo} from 'yiyun-app-sdk'
let userInfo = await getUserInfo();
userInfo: {
id: '', // userId
name: '', // 昵称
profilePicture: '', // 头像
phone: '' //手机号
}
扫描二维码
import {scanBarcode} from 'yiyun-app-sdk'
try {
let barcode = await scanBarcode();
} catch (err) {
if (err.name === 'AbortError') {
// 用户点了取消按钮
}
// 其他异常
}
识别平台二维码
调用
import {scanPlatformBarcode} from 'yiyun-app-sdk'
try {
let res = await scanPlatformBarcode();
} catch (err) {
if (err.name === 'AbortError') {
// 用户点了取消按钮
}
// 其他异常:
{
errCode: 1004,
message: '',
qrCode: ''
}
}
返回结果
旧版:
{
name: '',
key1(事件自定义参数名): value1,
key2(事件自定义参数名): value2,
...
}
新版:
{
args: {
key1: value,
key2: value
},
version: '2.17.0'
}
key格式: {appId}.{category}.{key} appId在开放平台应用列表查看,category和key由APP定义
通用异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | name| String |AbortError: 用户取消了操作 |
业务异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002、1003、1004、 1005、1006、1007、1008、1009、1010、1011 | | message| string |错误说明。1001:该二维码未绑定相关事件 1002:该二维码暂无当前应用的相关事件 1003: 二维码已作废 1004: 二维码已过期 1005: 二维码不存在 1006:网络错误 1007:获取平台二维码失败 1008:未开启照相机权限 1009:非当前企业的二维码 1010: 该二维码已被禁用,无法解析 1011: 你暂无权限查看该码 | | qrCode| string |二维码内容 |
监听安卓返回按钮触发
import {onBack} from 'yiyun-app-sdk'
onBack(() => {
// 安卓按钮已经点击
})
GPS 定位
import {getCurrentPosition} from 'yiyun-app-sdk'
try {
let pos = await getCurrentPosition();
// pos 的结构为 {latitude, longitude}
} catch (err) {
// 获取定位失败
}
录音
import {startRecordAudio, stopRecordAudio} from 'yiyun-app-sdk'
try {
await startRecordAudio(); // 开始录音
} catch (err) {
// 录音失败
}
try {
let data = await stopRecordAudio(); // 结束录音
// data 为录音的data url
} catch (err) {
// 结束录音失败
}
注意:开始录音后再开始录音,或者结束录音后再结束录音,都会抛异常。
在原生浏览器打开 URL
import {openUrl} from 'yiyun-app-sdk'
openUrl('https://www.douban.com')
图片预览
import {previewImage} from 'yiyun-app-sdk'
previewImage({
initialIndex: 0,
imageList: ['https://dl-todo.tsescloud.com/753700ec-b3c8-4b70-a238-fa0f920ab8e4/3sdR44345FD.jpg', 'https://dl-todo.tsescloud.com/753700ec-b3c8-4b70-a238-fa0f920ab8e4/3sdR4tR98tP.jpg'],
})
关闭应用
import {closeApp} from 'yiyun-app-sdk'
closeApp()
文件预览
import {previewFile} from 'yiyun-app-sdk'
previewFile(url)
注意:暂只支持pdf,txt,doc,docx,xls,xlsx,ppt,pptx. 安卓在第一次打开文件时,可能需要较长时间
用例
具体用法见exampleFor…….html
远程 debug
打开子应用后
安卓可以在 chrome 中打开 chrome://inspect/ 打开对应页面的调试工具 iOS 可以直接在 safari 的开发菜单打开页面对应的调试工具
区域选择器
引入
import {openAreaSelector} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool |true表示单选,false表示多选(必传) | | | disable| array |禁用区域的id列表(可选) | | | selected| array |已选区域的id列表(可选) | |
例
let result = await openAreaSelector({isOnly: false, selected: ['id'], disable: ['id']});
设备选择器
引入
import {openDeviceSelector} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool |true表示单选,false表示多选(必传) | | | disable| array |禁用区域的id列表(可选) | | | selected| array |已选区域的id列表(可选) | |
例
let result = await openDeviceSelector({isOnly: false, selected: ['id'], disable: ['id']});
选择部门和成员 selectDeptAndMember
引入
import {selectDeptAndMember} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | disable| object ||| | selected| object |||
disable内容说明:
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | members| Array |禁用的成员id列表|| | depts| Array |禁用的部门id列表||
selected 内容同disable:
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | members| Array |已选的成员id列表|| | depts| Array |已选的部门id列表||
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | members| Array |member对象的列表|| | depts| Array |dept对象的列表|| member对象:
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | userId| string |成员的用户Id|| | name| string |成员的姓名|| | memberId| string |成员的id||
dept对象:
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | id| string |部门的id|| | name| string |部门名||
例
let result = await selectDeptAndMember({
disable: {
members: ['...','...',...],
depts: ['...','...',...]
},
selected: {
members: ['...','...',...],
depts: ['...','...',...]
}
});
console(result)
//输出结果为
{
members: [
{
userId: '',
name: '',
memberId: ''
},{
userId: '',
name: '',
memberId: ''
},...
],
depts: [
{
id: '',
name: ''
}, {
id: '',
name: ''
},...
]
}
选择成员 selectMember
引入
import {selectMember} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool |是否单选|| | disable| array |禁用的成员id列表|| | selected| array |已选的成员id列表||
返回值为member组数,member对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | userId| string |成员的用户Id|| | name| string |成员的姓名|| | memberId| string |成员的id||
例
let result = await selectMember({
isOnly: false,
disable: ['...','...',...],
selected: ['...','...',...]
});
console(result)
//输出结果为
[
{
userId: '',
name: '',
memberId: ''
},{
userId: '',
name: '',
memberId: ''
},...
]
选择部门 selectDept
引入
import {selectDept} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool |是否单选|| | disable| array |禁用的部门id列表|| | selected| array |已选的部门id列表||
返回值为dept组数,dept对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | id| string |部门的id|| | name| string |部门名||
例
let result = await selectDept({
isOnly: false,
disable: ['...','...',...],
selected: ['...','...',...]
});
console(result)
//输出结果为
[
{
id: '',
name: ''
},{
id: '',
name: ''
},...
]
选择某部门下的成员 selectMemberOfDept
引入
import {selectMemberOfDept} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | deptId| string |部门Id(必填)|| | isOnly| bool |是否单选|| | disable| array |禁用的成员id列表|| | selected| array |已选择的成员id列表||
返回值为member组数,member对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | userId| string |成员的用户Id|| | name| string |成员的姓名|| | memberId| string |成员的id||
例
let result = await selectMemberOfDept({
deptId: '...',
isOnly: false,
disable: ['...','...',...],
selected: ['...','...',...]
});
console(result)
//输出结果为
[
{
userId: '',
name: '',
memberId: ''
},{
userId: '',
name: '',
memberId: ''
},...
]
选择岗位 selectPost
引入
import {selectPost} from 'yiyun-app-sdk'
接口参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool |是否单选|| | disable| array |禁用的岗位id列表|| | selected| array |已选的岗位id列表||
返回值为post组数,post对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | id| string |岗位的id|| | name| string |岗位名|| | level| string |岗位等级||
例
let result = await selectPost({
isOnly: false,
disable: ['...','...',...],
seletced: ['...','...',...]
});
console(result)
//输出结果为
[
{
id: '',
name: '',
level: '',
},{
id: '',
name: '',
level: ''
},...
]
选择联系人 selectContact
import {selectContact} from 'yiyun-app-sdk'
selectContact(true) // 接受bool,是否单选
返回值为user数组,user对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | id| string |用户id|| | name| string |用名名称|| | profilePicture| string |用户头像url||
例
let result = await selectContact(false);
console(result)
//输出结果为
[
{
id: '',
name: '',
profilePicture: ''
},{
id: '',
name: '',
profilePicture: ''
},...
]
选择设备实例(树) selectModalTree
import {selectModalTree} from 'yiyun-app-sdk'
返回值为user数组,user对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool|是否单选|| | selected| array(String) |已选列表,单选时不生效|| | disable| array(String) |禁用列表,单选时不生效|| | level| int |可供选择的层级,2.厂区,3.区域,4.生产线,5.工位,默认为5||
例
let result = await selectModalTree({isOnly: false,selected: [],disable: [],level: 3});
//输出结果为
[
{
id: '',
isError: '',
level: '',
name: '',
pid: '',
}
]
选择设备实例(单层) selectModal
import {selectModal} from 'yiyun-app-sdk'
返回值为user数组,user对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool|是否单选|| | id| String|模型id,用于限定模型的选择范围,不填默认为整个企业|| | selected| array(String) |已选列表|| | disable| array(String) |禁用列表|| | level| int |可供选择的层级,2.厂区,3.区域,4.生产线,5.工位,默认为5||
例
let result = await selectModal({isOnly: false,selected: [],disable: [],level: 3, id: ''});
//输出结果为
[
{
id: '',
isError: '',
level: '',
name: '',
pid: '',
}
]
选择地图 selectMap
import {selectMap} from 'yiyun-app-sdk'
返回值为user数组,user对象如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | isOnly| bool|是否单选|| | id| String|模型id|| | selected| array(String) |已选列表|| | disable| array(String) |禁用列表||
例
let result = await selectMap({isOnly: false,selected: [],disable: [], id: ''});
//输出结果为
[
{
boundary: '',
caseId: '',
caseName: '',
createTime: '',
iconId: '',
id: '',
location: '',
mapName: '',
mapType: '',
modalType: '',
}
]
内嵌地图的初始化,改变地图,改变block颜色 yiyunMap
import {yiyunMap} from 'yiyun-app-sdk'
例
yiyunMap.init('#map') // dom的id
yiyunMap.initGaodeKey('高德key');
yiyunMap.initialMap('地图id', '所属工厂模型实例Id', '块id'); // 第二,第三个参数用于设置中心点
// 如果有区块关联了传入的实例,那么会根据传入的参数改变区块的颜色和透明度
yiyunMap.setBlinkBlockByCase([
{id: '3p7ax4iGS31',
fillColor: '#666666',
fillOpacity: 0.9
}]);
// 直接改变区块的颜色为指定颜色和透明度
yiyunMap.setBlinkBlockByBlock([
{id: '3pTiETyBXpK',
fillColor: '#666666',
fillOpacity: 0.9
}]);
获取成员实例 getMembersFromOrganization
import {getMembersFromOrganization} from 'yiyun-app-sdk'
例
let res = await getMembersFromOrganization(
orgId, // 需要查询的组织Id,空表示查询当前用户的企业
isActiveMember // 是否只显示已经激活的成员,true表示只显示已激活(已绑定),false表示显示全部
)
res = [
{
id: '部门id',
parentId: '父部门Id',
code: '部门码',
name: '部门名称',
createTime: '创建时间戳',
memberCount: '当前部门下的成员数量(包括下下级)',
type: '类型:member表示人,dept表示部门',
children: [...] // 包含子部门和部门下的人,以此类推
},
...
,
{
id: '成员Id',
name: '成员名称',
headPortrait: '头像',
userId: '用户Id',
type: '类型:member表示人,dept表示部门',
}
]
获取岗位实例 getPostsFromOrganization
import {getPostsFromOrganization} from 'yiyun-app-sdk'
例
let res = await getPostsFromOrganization(
orgId // 需要查询的组织Id,空表示查询当前用户的企业
)
res = [
{
id: '岗位Id',
name: '岗位名称',
level: '岗位层级',
createTime: '创建时间戳',
memberCount: '岗位上的人数',
depts: [ // 相关的岗位(根据成员的部门-岗位得到的)
{ id: '岗位Id', name: '岗位名称' },
...
]
},
...
]
获取部门实例 getDeptFromOrganization
import {getDeptFromOrganization} from 'yiyun-app-sdk'
例
let res = await getDeptFromOrganization(
orgId // 需要查询的组织Id,空表示查询当前用户的企业
)
res = [
{
id: '部门id',
parentId: '父部门Id',
code: '部门码',
name: '部门名称',
createTime: '创建时间戳',
memberCount: '当前部门下的成员数量(包括下下级)',
children: [...] // 包含子部门列表,子部门可能存在子部门,以此类推
},
...
]
获取成员岗位实例 getMemberAndPostFromOrganization
import {getMemberAndPostFromOrganization} from 'yiyun-app-sdk'
例
let res = await getMemberAndPostFromOrganization(
orgId, // 需要查询的组织Id,空表示查询当前用户的企业
isActiveMember // 是否只显示已经激活的成员,true表示只显示已激活(已绑定),false表示显示全部
)
res = [
{
id: '部门id',
parentId: '父部门Id',
code: '部门码',
name: '部门名称',
createTime: '创建时间戳',
memberCount: '当前部门下的成员数量(包括下下级)',
type: 'dept',
children: [
...,
{
id: '岗位Id',
name: '岗位名称',
level: '岗位层级',
type: 'position'
}
...,
] // 包含子部门、部门下的人及部门下的岗位,以此类推
},
...
,
{
id: '成员Id',
name: '成员名称',
headPortrait: '头像',
userId: '用户Id',
type: 'member',
}
]
获取部门下的成员实例 getMemberByDeptFromOrganization
import {getMemberByDeptFromOrganization} from 'yiyun-app-sdk'
例
let res = await getMemberByDeptFromOrganization(
orgId, // 需要查询的组织Id,空表示查询当前用户的企业
deptId // 部门Id(必填)
)
res = [
{
id: '成员Id',
name: '成员名称',
headPortrait: '头像',
userId: '用户Id'
},
...
]
分享文件到微信 shareFileToWechat
import {shareFileToWechat} from 'yiyun-app-sdk'
例
let res = await shareFileToWechat({
url: 必填,文件的url,
name: 必填,文件名称,不能超过50个字符,
extension: 必填,文件后缀名,不能超过10个字符
})
分享网页到微信 shareWebPageToWechat
import {shareWebPageToWechat} from 'yiyun-app-sdk'
例
let res = await shareWebPageToWechat({
url: 必填,网页的url,
title: 必填,分享内容的标题,
subTitle:必填,分享内容的描述,
thumbnail: 必填,缩略图网址,
})
分享网页到微信(可以调回亦云) shareWebPageToWechatLoop
注意,如果点击的用户没有购买过应用,会出现'找不到对应的应用'的提示
注意,url不能直接如果带参数的话,参数不能是中文
import {shareWebPageToWechatLoop} from 'yiyun-app-sdk'
例
let res = await shareWebPageToWechatLoop({
url: 必填,网页的url,
title: 必填,分享内容的标题,
subTitle:必填,分享内容的描述,
thumbnail: 必填,缩略图网址,
})
选择E盘本地文件 selectLocalFile
从亦云本地文件夹中选择文件
返回值为文件的本地路径
import {selectLocalFile} from 'yiyun-app-sdk'
例
let res = await selectLocalFile()
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | url| String |本地文件路径|| | code| int |错误码(未定)||
从E盘选择文件 selectFileFromEDisk
返回值为E盘文件的属性值
import {selectFileFromEDisk} from 'yiyun-app-sdk'
例
let res = await selectFileFromEDisk({
isPersonalDisk: 选填,默认false,true是从个人盘中取文件, false是从当前企业盘中取文件
support: string,例: '1,2', 0.pdf 1.txt 2.doc、docx 3.xls、xlsx 4.ppt、pptx 5.csv 6.jpeg、jpg 7.png 8.gif 9.bmp 10.zip 11.rar 12.7z 13.mp3 14.mov 15.mp4 16.ogg 17.mpv 18.wmv 19.fmp4 20.wav 21.arm 22.flv 23.其他
})
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | diskId| String |盘的ID|| | fileId| String |文件ID|| | parentId| String |父ID|| | name| String |文件的显示名称|| | fullPath| String |E盘文件路径|| | size| int |文件大小|| | uploaderName| String |上传人|| | url| String |文件的url,有效期7天|| | thumbnail| String |缩略图(仅在是图片时有效)||
从E盘选择文件 selectFoldFromEDisk
返回值为E盘文件夹的属性值
import {selectFoldFromEDisk} from 'yiyun-app-sdk'
例
let res = await selectFoldFromEDisk({
isPersonalDisk: 选填,默认false,true是从个人盘中取文件, false是从当前企业文件夹中取文件
})
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | diskId| String |盘的ID|| | foldId| String |文件ID, 可空||
预览E盘文件 eDiskFilePreview
import {eDiskFilePreview} from 'yiyun-app-sdk'
例
let res = await eDiskFilePreview({
diskId: 必填,盘ID,
fileId: 必填, 文件ID
})
根据盘id和文件id获取文件的url getEDiskFileLink
import {getEDiskFileLink} from 'yiyun-app-sdk'
例
let res = await getEDiskFileLink({
diskId: 必填,盘ID,
fileId: 必填, 文件ID
})
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | url| String |文件的url|| | expireTime| int |链接的过期时间||
上传文件到亦盘 uploadBase64
import {uploadBase64} from 'yiyun-app-sdk'
例
let res = await uploadBase64({
isPersonalDisk: bool 默认false 是否上传到个人盘, targetFoldId: String 必填 文件夹id,
file:String 必填 文件内容 示例:iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAA3ElEQVQ4je3UMUoDQRSH8QmEEAsJG1BS5QLBc4insPMQEQI2pnELEctszmORJpA2hSi6nZ2,
fileName: String 文件名称 必填,
extension: String 必填 文件后缀名
})
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | id| String |文件的id,可以用来移除任务和获取上传的结果|| | filename| String |文件的名称|| | targetId| String |目标文件夹id|| | diskId| String |盘ID|| | size| int |文件大小||
上传文件到亦盘 uploadFile
import {uploadFile} from 'yiyun-app-sdk'
例
let res = await uploadFile({
isPersonalDisk: bool 默认false 是否上传到个人盘, targetFoldId: String 必填 文件夹id,
file:String 必填 文件路径,当前只能通过selectLocalFile方法获取
})
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | id| String |文件的id,可以用来移除任务和获取上传的结果|| | filename| String |文件的名称|| | targetId| String |目标文件夹id|| | diskId| String |盘ID|| | size| int |文件大小||
获取文件的上传状态 getUploadStatus
上传失败会报错
import {getUploadStatus} from 'yiyun-app-sdk'
例
let res = await getUploadStatus({
id: String 必填 文件id,
})
取消上传任务 removeTask
import {getUploadStatus} from 'yiyun-app-sdk'
例
let res = await removeTask({
id: String 必填 文件id,
})
监听扫描蓝牙设备 onScan
例
onScan((res)=>{
//每次新扫描到设备都会进入这里执行操作
});
res = [
{
id: '设备的uuid',
name: '设备名称',
},
...
]
连接设备 connect
例
let res = await connect({
uuid: 必填,设备的uuid,
})
返回
- 0 连接成功
- -1 连接超时
- -2 蓝牙地址格式错误
- -3 打印机与SDK不匹配(握手不通过)
获取打印机状态 currentConnectedDevice
例
let res = await currentConnectedDevice()
返回
- 0 打印机正常连接
- 1 未连接
- -1 发送失败
- 2 缺纸
- 6 开盖
断开当前连接设备 disconnect
import {disconnect} from 'yiyun-app-sdk'
例
let res = await disconnect()
设置标签高度 printAreaSize
import {printAreaSize} from 'yiyun-app-sdk'
例
let res = await YiYun.printAreaSize({参数都是必填
offset:'0', 上下文对象
horizontal:'200',打印机水平方向dpi(根据实际打印机dpi设置)
vertical:'200',打印机垂直方向dpi(根据实际打印机dpi设置)
height:'1400',标签高度 (单位:dot)200dpi 8 dot = 1mm,300dpi 12 dot = 1mm
qty:'1'打印次数
});
设置对齐方式 align
import {align} from 'yiyun-app-sdk'
例
let res = await align({
align: 'CENTER' 必填,对齐方式,String格式
})
| 参数 | 描述 | | ----- | ------------------------------------------------------------ | | align | 'CENTER':居中。 'LEFT':左对⻬。 'RIGHT':右对⻬。 |
文本打印 printText
例
let res = await printText({都必填
command:'T',
font:'8',
x:'50',
y:'5',
data:'SELF_TEST'
})
| 参数 | 描述 | | ------- | ------------------------------------------------------------ | | command | 文字的方向'T'':水平。'T90':逆时针旋转90度。 'T180':逆时针旋转180度。'T270':逆时针旋转270度。 | | font | 字体点阵大小:(单位:dot)注意:英文固件只支持(0和1)。0:12x24。 1:12x24(中文模式下打印繁体),英文模式下字体变成(9x17)大小 2:8x16。3:20x20。 4:32x32或者16x32,由ID3字体宽高各放大两倍。 7:24x24或者12x24,视中英文而定。 8:24x24或者12x24,视中英文而定。20:16x16或者8x16,视中英文而定。 24:24x24或者12x24,视中英文而定。 55:16x16或者8x16,视中英文而定。 其它默认24x24或者12x24,视中英文而定。 | | x | 横坐标(单位 dot) | | y | 纵坐标(单位 dot | | Data | 文本数据 | |
打印条码 printCode
例
let res = await printCode({都必填
command:'BARCODE',
codeType:'128',
width:'2',
ratio:'1',
height:'50',
x:'0',
y:'100',
underText:true,
number:'7',
size:'0',
offset:'5',
data:'123456789'
})
| 参数 | 描述 | | --------- | ------------------------------------------------------------ | | command | 'BARCODE':水平方向'VBARCODE':垂直方向 | | codeType | 条码类型:UPCA = "UPCA"; UPCA2 = "UPCA2"; UPCA5 = "UPCA5"; UPCE = "UPCE"; UPCE2 = "UPCE2"; UPCE5 = "UPCE5"; EAN13 = "EAN13"; EAN132 = "EAN132"; EAN135 = "EAN135"; EAN8 = "EAN8"; EAN82 = "EAN82"; EAN85 = "EAN85"; code39 = "39"; code39C = "39C"; F39 = "F39"; F39C = "F39C"; code93 = "93"; I2OF5 = "I2OF5"; I2OF5C = "I2OF5C"; I2OF5G = "I2OF5G"; code128 = "128"; UCCEAN128 = "UCCEAN128"; CODABAR = "CODABAR"; CODABAR16 = "CODABAR16"; MSI = "MSI"; MSI10 = "MSI10"; MSI1010 = "MSI1010"; MSI1110 = "MSI1110"; POSTNET = "POSTNET"; FIM = "FIM"; | | Width | 窄条的单位宽度 | | ratio | 宽条窄条的比例0=1.5:1 , 1=2.0:1 , 2=2.5:1 , 3=3.0:1 , 4=3.5:1 , 20=2.0:1 , 21=2.1:1 , 22=2.2:1 , 23=2.3:1 , 24=2.4:1 , 25=2.5:1 26=2.6:1 , 27=2.7:1 , 28=2.8:1 , 29=2.9:1 , 30=3.0:1 , | | Height | 条码高度 | | x | 条码的起始横坐标。(单位:dot) | | y | 条码的起始纵坐标。(单位:dot) | | undertext | 条码下方的数据是否可⻅。 ture:可⻅,false:不可⻅。 | | number | 字体的类型 (undertext=true才生效) undertext=false也要传,随便填 | | size | 字体的大小(undertext=true才生效)undertext=false也要传,随便填 | | offset | 条码与文字间的距离(undertext=true才生效)undertext=false也要传,随便填 | | data | 条码数据 |
打印二维码 printQR
例
let res = await printQR({
command:'BARCODE',
x:'0',
y:'870',
m:'4',
u:'6',
data:'ABC123'
})
| 参数 | 描述 | | ------- | ------------------------------------------------------------ | | command | 'BARCODE':水平方向'VBARCODE':垂直方向 | | x | 二维码的起始横坐标。(单位:dot) | | y | 二维码的起始纵坐标。(单位:dot) | | m | QR的类型: 1:普通类型 2:在类型1的基础上增加了个别的符号 传'4'即可 | | u | 单位宽度/模块的单元高度,范围是1到32默认为6 | | data | 二维码的数据 |
打印直线 printLine
例
let res = await printLine({
x0:'0',
y0:'1030',
x1:'400',
y1:'1030',
width:'1'
})
| 参数 | 描述 | | ----- | ------------------------- | | X0 | 起始的X坐标。(单位:dot) | | Y0 | 起始的Y坐标。(单位:dot) | | X1 | 结尾的X坐标。(单位:dot) | | Y1 | 结尾的Y坐标。(单位:dot) | | width | 线条的单位宽度。 (默认:1) |
打印矩形框 printBox
例
let res = await printBox({
x0:'0',
y0:'1030',
x1:'400',
y1:'1030',
width:'1'
})
| 参数 | 描述 | | ----- | ------------------------- | | X0 | 左上⻆的X坐标。(单位:dot) | | Y0 | 左上⻆的Y坐标。(单位:dot) | | X1 | 右下⻆的X坐标。(单位:dot) | | Y1 | 右下⻆的Y坐标。(单位:dot) | | width | 线条的单位宽度。 (默认:1) |
打印内容 print
先设置打印高度,然后调用打印文字或者二维码的函数,最后调用print()就可以打印了
import {print} from 'yiyun-app-sdk'
例
await printAreaSize({offset:'0', horizontal:'200', vertical:'200', height:'1400', qty:'1'});
await align({align:'CENTER'});
await printText({command:'T', font:'8', x:'50', y:'5', data:'SELF_TEST'});
await align({align:'LEFT'});
await printCode({command:'BARCODE', codeType:'128', width:'2', ratio:'1', height:'50', x:'0', y:'100', underText:true, number:'7', size:'0', offset:'5', data:'123456789'});
await printQR({command:'BARCODE', x:'0', y:'870', m:'4', u:'6', data:'ABC123'});
await printLine({x0:'0', y0:'1030',x1:'400',y1:'1030',width:'1'});
await printBox({x0:'0', y0:'1080',x1:'400',y1:'1300',width:'1'});
await print();
返回
- 大于0 打印成功
- -1 打印失败
打印图片 printImage
直接调用该函数打印即可,不用设置高度,也不用调用print()函数
例
let res = await printImage({
imagePath: 必填,图片路径,
count: 必填,打印数量
})
返回
- 大于0 打印成功
- -1 打印失败
- -2 bitmap为空
- -3 图片数据超过打印机缓冲区
设置页面宽度 pageWidth
在printAreaSize之后调用
指定⻚面宽度。(单位:dot) 200dpi 8 dot = 1mm 70mm的宽度设置560
例
let res = await pageWidth({width:'560'})
返回
- 大于0 发送成功
- -1 发送失败
标签定位 form
在Print()之前调用,只在标签模式下起作用
例
let res = await form()
返回
- 大于0 发送成功
- -1 发送失败
文件下载 downloadFile
import {downloadFile} from 'yiyun-app-sdk'
例
let res = await downloadFile({
url: '文件地址',
onStart: () => {
// 开始下载的回调
},
onReceiveProgress: (data) => {
// 下载过程中的调用 data为 {receive:10000,total:20000}
},
onError: (err) => {
// 错误的回调
},
onComplete: () => {
// 下载完成的回调
}
})
返回值为Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | url| String |文件地址|| | onStart| Function |下载开始的处理|| | onReceiveProgress| Function |下载进度的处理|| | onError| Function |下载错误的处理|| | onComplete| Function |下载完成的处理||
onReceiveProgress
返回一个Object,内容如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | receive| number |已下载的大小|| | total| number |总大小||
获取设备标识 getDeviceIdentity
import {getDeviceIdentity} from 'yiyun-app-sdk'
例
let res = await getDeviceIdentity()
发起审批 toApplyApprove
import {toApplyApprove} from 'yiyun-app-sdk'
例
await toApplyApprove()
打开与某用户的私聊 openConversation
import {openConversation} from 'yiyun-app-sdk'
await openConversation(userId)
请求参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | userId| string |对象的用户id||
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001| | message| string |错误说明。1001:用户不存在 |
打开与某用户的信息页面 openUserInfo
import {openUserInfo} from 'yiyun-app-sdk'
await openUserInfo(userId)
请求参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | userId| string |对象的用户id||
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001| | message| string |错误说明。1001:用户不存在 |
获取可以打开的外部导航应用 getEnableMap
import {getEnableMap} from 'yiyun-app-sdk'
let res = await getEnableMap({
latitude: ,
longitude: ,
})
console.log(res) // [0,1,2]
请求参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | latitude| double |目标位置的纬度|| | longitude| double |目标位置的经度||
返回值为地图枚举的Array
其中 0: 高德地图 1:腾讯地图 2:百度地图 3:苹果地图(安卓不会返回该类型)
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001| | message| string |错误说明。1001:经纬度数据有误 |
打开外部导航 openMap
import {openMap} from 'yiyun-app-sdk'
let res = await openMap({
mapType: 0,
latitude: ,
longitude: ,
})
请求参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | mapType| num |地图类型的枚举 0: 高德地图 1:腾讯地图 2:百度地图 3:苹果地图(安卓不会返回该类型)|| | latitude| double |目标位置的纬度|| | longitude| double |目标位置的经度||
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002、1003| | message| string |错误说明。1001:经纬度数据有误 1002: 无法识别的地图类型 1003: 无法打开该地图 |
获取wifi信息 getWifiInfo
import {getWifiInfo} from 'yiyun-app-sdk'
let res = await getWifiInfo()
返回值为Object 结构如下
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | name| string |Wi-Fi名称|| | bssid| string |Wi-Fi的bssid|| | ip| string |Wi-Fi的ip地址||
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002| | message| string |错误说明。1001:未连接wifi 1002: 未开启定位权限,无法获取准确的Wi-Fi信息 |
发送消息 sendMessage
import {sendMessage} from 'yiyun-app-sdk'
let res = await sendMessage({
userId: '',
message: {
type: 0,
data: {
text: '123'
}
}
})
请求参数
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | userId| string |消息发送的对象 || | message| object |消息体||
message对象说明
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | type| num |地图类型的枚举 0: 文本消息 4:卡片消息 5:位置消息 || | data| object |对应消息类型的数据对象||
data对象说明
当type = 0时
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | text| string |文本内容 ||
当type = 4时
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | title| string |卡片标题 || | content| string |卡片内容 ||
当type = 5时
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | latitude| double |纬度|| | longitude| double |经度||
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002、1003、1004、1005、1006| | message| string |错误说明。1001:用户不存在 1002: 消息体结构有误 1003: 无法识别的消息类型 1004: 文本消息的text不能为空 1005: 卡片消息的title和content不能同时为空 1006: 经纬度数据有误|
跳转其他app navigatorToApp
import {navigatorToApp} from 'yiyun-app-sdk'
let res = await navigatorToApp({
appId: '',
path: '',
fregment: ''
})
// path 和 fregment 同开放平台处配置看板跳转填写的内容
// 如: app 地址为 "https://aaa.bbb.ccc/index.html", path为 "setting.html", fregment 为 "/route?a=1&b=2"
// 则跳转的页面为 "https://aaa.bbb.ccc/setting.html#/route?a=1&b=2"
| 参数名 | 参数类型 | 说明 | 其他| | -------- | -------- | -------- | -------- | | appId| string |目标appId|| | path| string |目标app项目目录下的页面路径|| | fregment| string |额外的路由以及参数||
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:2001、2002、2003| | message| string |错误说明。2001: 获取app失败 2002: 应用未购买 2003: 应用未授权|
向管理员发送应用权限申请 applyAppPermissions
import {applyAppPermissions} from 'yiyun-app-sdk'
try {
let res = await applyAppPermissions()
} catch (e) {
}
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002| | message| string |错误说明。1001:app无需授权 1002: 发送失败|
跳转应用权限授权页面 toSetAppPermissions
import {toSetAppPermissions} from 'yiyun-app-sdk'
try {
let res = await toSetAppPermissions()
} catch (e) {
}
检查NFC权限 checkNFCPermission
import {checkNFCPermission} from 'yiyun-app-sdk'
try {
let res = await checkNFCPermission()
// res: true 可用 false 不可用
} catch (e) {
}
读取NCF标签 readNFC
import {readNFC} from 'yiyun-app-sdk'
try {
let res = await readNFC()
} catch (e) {
}
返回结果
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | id| string |NFC的id| | type| string |NFC的类型| | records| List |NFC标签的内容|
record内容如下
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | id| string |record的id| | data| string |record的内容| | type| string |内容的类型| | tnf| string |NFCTypeNameFormat, 具体有well_known,mime_media,absolute_uri,external_type,unchanged,unknown,empty| | languageCode| string |语言|
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002、1003、1004、1005、1006、1007、1100、1101| | message| string |错误说明。1001:取消扫描 1002: 扫描超时 1003:系统不支持NDEF 1004: 意外终止 1005: NFC系统繁忙 1006: IO操作异常 1007: NDEF格式有误 1100: 读取失败 1101: NFC不可用|
写入NCF标签内容 writeNFC
import {writeNFC} from 'yiyun-app-sdk'
try {
let res = await writeNFC([{
'tnf': 0,
'data': 'iiiiiiiiiiiii'
},{
'tnf': 1,
'data': 'https://effio.cn'
},{
'tnf': 2,
'type': 'text/plain',
'data': '哈哈哈'
},{
'tnf': 2,
'type': 'application/json',
'data': '{"a": 123}'
},{
'tnf': 3,
'type': 'hhh',
'data': '4sXoi112F'
}])
} catch (e) {
}
接收List record 内容如下
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | tnf| int |0: 文本 1: url类型 2: mime_media 3: external_type| | type| string |record的类型,当tnf为0或1时可不传 tnf = 0时,type 固定为"T"(文本类型);tnf = 1时,type 固定为"U"(uri类型)| | data| string |record的内容|
异常说明
| 参数名 | 参数类型 | 说明 | | -------- | -------- | -------- | | errCode| int |错误码:1001、1002、1003、1004、1005、1006、1007、1100、1101| | message| string |错误说明。1001:取消扫描 1002: 扫描超时 1003:系统不支持NDEF 1004: 意外终止 1005: NFC系统繁忙 1006: IO操作异常 1007: NDEF格式有误 1008: 打开了多个NFC识别器 1009: NFC tag不可用 1010: NFC tag不可写 1011: 写入内容超出该NFC tag的容量 1012: 更新失败 1100: 写入失败 1101: NFC不可用|