npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

yiyun-app-sdk

v1.3.7

Published

YiYun App SDK

Downloads

81

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不可用|