- SDK请在平台上架应用后在平台内打开进行调用,直接使用无效!
- 使用前请先了解ES6相关知识,包括Promise的用法以及await的使用条件
资产云前端SDK,利用postMessage进行跨iframe的安全数据请求。用于获取用户id等基础信息,或者请求平台前端进行某些操作。
SDK采用TypeScript开发,采用npm包引入可以自动获得完善的类型定义和代码自动补全。
-
引入和初始化
可以使用script标签或者npm包两种方式进行引入。
- npm包安装(推荐)
可以使用ES7
async/await
语法简化异步调用import SdkClient from "@assetcloud/asset-sdk"; // 初始化时可设定超时时间(秒) const ac = new SdkClient(5); await ac.init();
- script标签引入
<!-- 将包内dist/sdk.umd.js复制到项目中合适的位置 --> <script src="path/to/sdk.umd.js"></script> <script> var ac = new ACSDK.SdkClient(); ac.init().then(function() { console.log("SDK已初始化"); }); </script>
注意:在构建工具(如Webpack)中直接使用script标签引入,需要以正确的顺序排列script标签,不然会找不到变量。如果需要在引用npm包的情况下使用script标签的全局变量,可以通过配置外部依赖的方式使用。
// webpack.config.js(或vue.config.js) module.exports = { //... externals: { "@assetcloud/asset-sdk": "ACSDK" }, }; // OK import SdkClient from "@assetcloud/asset-sdk"; const ac1 = new SdkClient(); // OK, 全局变量依然可以使用 const ac2 = new ACSDK.SdkClient();
-
监听和发送消息
处理消息有两种方法,添加事件监听器和直接异步发送消息并等待返回结果。
支持接收来自平台主动推送的消息。 支持发送没有响应结果的消息。
ac.addEventListener("GET_USER", e => { console.log(e.data.data.userId); }); ac.send("GET_USER");
返回
Promise
,如果平台返回值的success
字段为false
,会自动触发reject。try { const res = await ac.sendAsync("GET_USER"); const { userId } = res.data.data; } catch (error) { console.error(error.data.msg); }
返回结果类型
AssetCloudEvent<T extends AssetCloudMessage>
字段 类型 说明 data data AssetCloudMessageMap[T]
承载数据 code number
状态码 success boolean
是否成功 msg string
返回消息 type T
消息类型 功能 消息类型
AssetCloudMessage请求参数 返回结果中data的格式
AssetCloudMessageMap[T]获取用户 Id GET_USER 无 { userId: string }
获取用户账号 GET_USER_PHONE 无 { phone: string }
获取当前用户所属集团列表 GET_GROUP 无 { groupIds: object[] }
在浏览器打开新的标签页 OPEN_TAB 需要打开的url,
如:"http://www.baidu.com"— 跳转到平台首页 GO_HOME 无 — 跳转到平台待办 GO_TODO 无 — 将当前页面全屏(整个屏幕全屏) OPEN_FULLSCREEN 无 — 获取当前应用入口菜单 GET_MENU 无 object