跳到主要内容

设备分享

更新时间:2026-04-02 19:25:56
// 导入设备分享头文件
import { RTCXLogger, RTCXDeviceMgrTypes, RTCXDeviceShareMgr } from 'rtcxsdk'

用户之间分享设备

/**
* 生成分享用的二维码(30min有效)
* @public
*
* @param iotIdList - 要分享的设备列表。一次最多20
* @param permissionList - 权限列表
*/
export declare function generateShareQrCode(iotIdList: string[], permissionList: ShareDevicePermissionEnum[]): Promise<GenerateShareQrCodeRsp>;
/**
* 通过扫描二维码绑定设备(分享设备)
*
* @param qrKey - 设备ID生成的二维码内容信息
* @public
*/
export declare function scanBindByShareQrcode(qrKey: string): Promise<ScanBindByShareQrcodeRsp>;
/**
* 设备分享给指定的用户
*
* @param shareDevicesReq - 分享给用户请求参数
* @public
*/
export declare function shareDevices(shareDevicesReq: ShareDevicesReq): Promise<ShareDevicesRsp>;
/**
* 发起者取消分享
*
* @param recordIdList - 分享记录列表
* @public
*/
export declare function cancelShare(recordIdList: number[]): Promise<void>;
/**
* 被分享者同意或拒绝分享
*
* @param recordIdList - 分享记录列表
* @param agree - 0(表示不同意);1(表示同意)。
* @public
*/
export declare function confirmShare(recordIdList: number[], agree: number): Promise<void>;
/**
* 获取分享通知列表
*
* @param getShareNoticeListReq - 分享通知请求参数
* @public
*/
export declare function getShareNoticeList(getShareNoticeListReq: GetShareNoticeListReq): Promise<GetShareNoticeListRsp>;
/**
* 批次查询设备分享记录
*
* @param queryShareRecordByBatchReq - 批次分享记录查询
* @public
*/
export declare function queryShareRecordByBatch(queryShareRecordByBatchReq: QueryShareRecordByBatchReq): Promise<QueryShareRecordByBatchRsp>;
/**
* 分享权限修改
*
* @param recordId - 分享记录ID
* @param permissionList - 权限列表
* @public
*/
export declare function setSharePermission(recordId: number, permissionList: ShareDevicePermissionEnum[]): Promise<void>;
/**
* 查询用户下设备当前被分享用户(初始化和接受状态)
*
* @param getSharedListReq - 请求参数
* @public
*/
export declare function getSharedUserList(getSharedListReq: GetSharedUserListReq): Promise<GetSharedUserListRsp>;
/**
* 查询用户下设备的分享数量(初始化和接受状态)
*
* @param getSharedCountReq - 请求参数
* @public
*/
export declare function getSharedCountList(getSharedCountReq: GetSharedCountReq): Promise<GetSharedCountRsp>;

调用示例如下:

生成分享用的二维码

try {
const rsp: RTCXDeviceMgrTypes.GenerateShareQrCodeRsp =
await RTCXDeviceShareMgr.generateShareQrCode([this.iotId!!], permissions)
const qrKey = rsp.qrKey;
const expireTime = rsp.expireTime;
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

通过扫描二维码绑定设备

private acceptShareDevice(
qrKey: string
) {
RTCXDeviceShareMgr.scanBindByShareQrcode(qrKey).then((rsp: RTCXDeviceMgrTypes.ScanBindByShareQrcodeRsp) => {
if (rsp.iotIdList.length) {
showToast(this, "设备分享成功");

this.getDataList()
}
if (rsp.failList?.length) {
let sbArr = ["存在分享失败的设备::"];
for (const failDevice of rsp.failList) {
sbArr.push(`\n${failDevice.iotId}\n${failDevice.code}\n`)
}
showAlert(this, {
message: sbArr.join("")
})
}
}).catch(() => {
showToast(this, "分享设备失败");
})
}

设备分享给指定的用户

private async doShareByAccount(account: string) {
const permissions = this.getCheckedPermissions()
if (!permissions.length) {
showToast(this, "请先选择权限")
return
}
try {
const accountAttrType = account.indexOf("@") >= 0 ? RTCXDeviceMgrTypes.ShareAccountAttrTypeEnum.EMAIL :
RTCXDeviceMgrTypes.ShareAccountAttrTypeEnum.MOBILE
const req: RTCXDeviceMgrTypes.ShareDevicesReq = {
iotIdList: [this.iotId!!],
accountAttr: account,
accountAttrType: accountAttrType,
permissionList: permissions
}
await RTCXDeviceShareMgr.shareDevices(req)

showToast(this, "分享成功")
this.pathStack.pop()
} catch (e) {
showToast(this, "操作失败,请稍后再试")
}
}

获取分享通知列表

private async getDataList() {

const reqParams: RTCXDeviceMgrTypes.GetShareNoticeListReq = {
pageNo: 1,
pageSize: 100,
groupBy: "BATCH"
}
try {
const rsp = await RTCXDeviceShareMgr.getShareNoticeList(reqParams)
this.dataList = rsp.data
} catch (e) {
showToast(this, `获取数据失败${e}`)
}
}

被分享者同意或拒绝分享

private async doConfirmShare(recordId:
number, agree:
number
) {
try {
await RTCXDeviceShareMgr.confirmShare([recordId], agree)
this.getDataList()
} catch (e) {
showToast(this, "操作失败,请稍后再试")
}
}

发起者取消分享

private async doCancelShare(recordId:
number
) {
try {
await RTCXDeviceShareMgr.cancelShare([recordId])
this.getDataList()
showToast(this, "取消分享成功")
} catch (e) {
showToast(this, "操作失败,请稍后再试")
}
}

查询设备分享记录

private async ShareRecordByBatch() {

const reqParams: RTCXDeviceMgrTypes.QueryShareRecordByBatchReq = {
pageNo: 1,
pageSize: 100,
batchId: 1
}
try {
const rsp = await RTCXDeviceShareMgr.queryShareRecordByBatch(reqParams)
this.dataList = rsp.data
} catch (e) {
showToast(this, `获取数据失败${e}`)
}
}

分享权限修改

private async goModifyPermissions() {

const permissions = this.getCheckedPermissions()
if (!permissions.length) {
showToast(this, "请先选择权限")
return
}
try {
await RTCXDeviceShareMgr.setSharePermission(this.shareRecordId!!, permissions)

showToast(this, "修改成功")
this.pathStack.pop()
} catch (e) {
showToast(this, "操作失败,请稍后再试")
}
}

查询用户下设备当前被分享用户(初始化和接受状态)

RTCXDeviceShareUserListReq *req = [[RTCXDeviceShareUserListReq alloc] init];
req.pageNo = 1;
req.pageSize = 200;
req.iotId = self.iotId;
[RTCXDeviceService(RTCXDeviceShareProtocol) getDeviceShareUserListWithReq:req onSuccess:^(id _Nullable data, id _Nullable rawData) {
[self.tableView.mj_header endRefreshing];
NSString *jsonStr = [((RTCXDeviceShareUserListRsp *)data).items iotyy_modelToJSONString];
weakSelf.shareNotyList = [NSArray iotyy_modelArrayWithClass:[ShareDeviceListModel class] json:jsonStr];
[weakSelf.tableView.hwhd_rowArray addObjectsFromArray:weakSelf.shareNotyList];
[weakSelf.tableView reloadData];
if (weakSelf.shareNotyList.count <= 0) {
[weakSelf showToast:@"该设备未分享给任何人"];
}
} onError:^(NSError * _Nullable error) {
[self.tableView.mj_header endRefreshing];
[weakSelf showToast:[NSString stringWithFormat:@"%ld : %@",error.code,error.userInfo[NSLocalizedFailureReasonErrorKey]]];
}];

查询用户下设备的分享数量(初始化和接受状态)

private async getDataList() {
if (!this.deviceInfo) {
return;
}

const reqParams: RTCXDeviceMgrTypes.GetSharedUserListReq = {
iotId: this.deviceInfo?.iotId!!,
pageNo: 1,
pageSize: 100
}
try {
const rsp = await RTCXDeviceShareMgr.getSharedUserList(reqParams)
this.dataList = rsp.items
} catch (e) {
showToast(this, `获取数据失败${e}`)
}
}