跳到主要内容

设备分享

更新时间:2026-04-03 11:20:37
// 导入头文件
import 'package:airtc_engine/src/device_center/rtcx_device_share.dart';

用户之间分享设备

class RTCXFluShareApi {
/// 生成分享用的二维码(30min有效)
Future<RTCXFluShareResult> generateShareQrCode(RTCXFluGeneralShareQrcodeReq req) async;

/// 通过扫描二维码绑定设备(分享设备)
Future<RTCXFluShareResult> deviceBindByScanShareQrCode(String qrKey) async;

/// 设备分享给指定用户
/// @"EMAIL":@"MOBILE"
Future<RTCXFluShareResult> deviceShare(RTCXFluDeviceMgrReq req) async;

/// 获取分享通知列表
Future<RTCXFluShareNoticeListModel> deviceShareNoticeList(RTCXFluDeviceShareNoticeListReq req) async;

/// 被分享者同意或拒绝分享
Future<RTCXFluShareResult> confirmShare(RTCXFluConfirmShareReq req) async;

/// 发起者取消分享
Future<RTCXFluShareResult> cancelShare(RTCXFluCancelShareReq req) async;

/// 查询设备分享记录
Future<RTCXFluShareNoticeListModel> deviceShareRecord(RTCXFluDeviceShareRecordReq req) async;

/// 分享权限修改
Future<RTCXFluShareResult> setPermissionList(RTCXFluSetPermissionListReq req) async;

/// 查询用户下设备当前被分享用户(初始化和接受状态)
Future<RTCXFluSharedUserListModel> getDeviceShareUserList(RTCXFluDeviceShareUserListReq req) async;

/// 查询用户下设备的分享数量(初始化和接受状态)
Future<RTCXFluShareCountListModel> getDeviceShareCountList(RTCXFluDeviceShareCountListReq req);
}

设备分享调用示例如下:

  // 设备分享api
final RTCXFluShareApi shareApi = RTCXFluShareApi();

生成分享用的二维码

  
RTCXFluGeneralShareQrcodeReq req = RTCXFluGeneralShareQrcodeReq(
iotIdList: widget.iotIdList,
permissionList: widget.permissionList,
);

shareApi
.generateShareQrCode(
RTCXFluGeneralShareQrcodeReq(req)
.then((value) {
if (value.result == true) {
String? qrcodeData = value.message;
print("生成成功,请让对方扫描二维码接收设备分享");
} else {
_message = value.message ?? '生成失败';
print("生成失败");
}
})
.catchError((error) {
print("生成失败 error:${error.toString()}");
});

通过扫描二维码绑定设备

  
shareApi
.deviceBindByScanShareQrCode(qrKey)
.then((value) {
if (value.result == true) {
Fluttertoast.showToast(msg: '绑定成功');
} else {
Fluttertoast.showToast(msg: value.message ?? '绑定失败');
}
})
.catchError((error) {
Fluttertoast.showToast(msg: '绑定失败: $error');
});

设备分享给指定的用户

  
RTCXFluDeviceMgrReq req = RTCXFluDeviceMgrReq(
iotIdList: iotIdList,
accountAttr: phone,
accountAttrType: 'MOBILE',
mobileLocationCode: '+86',
permissionList: permissions,
);
shareApi
.deviceShare(req)
.then((value) {
if (value.result == true) {
Fluttertoast.showToast(msg: '分享成功');
} else {
Fluttertoast.showToast(msg: value.message ?? '分享失败');
}
});

获取分享通知列表

  
RTCXFluDeviceShareNoticeListReq req = RTCXFluDeviceShareNoticeListReq(
pageNo: 1,
pageSize: 100,
groupBy: "BATCH",
);
shareApi
.deviceShareNoticeList(req)
.then((RTCXFluShareNoticeListModel value) {
print("分享通知列表:${value.items}");
})
.catchError((error) {
print("获取分享通知列表失败");
});

被分享者同意或拒绝分享

  
RTCXFluConfirmShareReq req = RTCXFluConfirmShareReq(
recordIdList: recordIdList,
agree: true,
);

shareApi.confirmShare(req).then((value) {
if (value.result == true) {
Fluttertoast.showToast(msg: "同意成功");
} else {
Fluttertoast.showToast(msg: "同意失败");
}
});

发起者取消分享

  
RTCXFluCancelShareReq req = RTCXFluCancelShareReq(
recordIdList: recordIdList,
);
shareApi
.cancelShare(req)
.then(
(value) => {
if (value.result == true)
{
Fluttertoast.showToast(msg: "取消成功"),
}
else
{Fluttertoast.showToast(msg: "取消失败")},
},
)
.catchError((error){
Fluttertoast.showToast(msg: "取消失败:${error.toString()}");
});

查询设备分享记录

  
try {
RTCXFluDeviceShareRecordReq req = RTCXFluDeviceShareRecordReq(
batchId: batchId,
pageNo: 1,
pageSize: 100,
);

final result = await shareApi.deviceShareRecord(req);

if (mounted) {
setState(() {
_batchDeviceMap[batchId] = result;
});
}
} catch (e) {
print("查询设备分享记录失败:${e.toString()}");
}

分享权限修改

  
RTCXFluSetPermissionListReq req = RTCXFluSetPermissionListReq(
recordId: recordId,
permissionList: permissions,
);

shareApi
.setPermissionList(req)
.then((value) {
if (value.result == true) {
Fluttertoast.showToast(msg: '修改成功');
} else {
Fluttertoast.showToast(msg: value.message ?? '修改失败');
}
})
.catchError((error) {
Fluttertoast.showToast(msg: '修改失败:${error.toString()}');
});

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

  
RTCXFluDeviceShareUserListReq req = RTCXFluDeviceShareUserListReq(
iotId: widget.iotId,
pageNo: 1,
pageSize: 100,
);
shareApi.getDeviceShareUserList(req).then((RTCXFluSharedUserListModel value) {
print("getDeviceShareUserList value:${value.items}");
}).catchError((error){
print("getDeviceShareUserList error:${error.toString()}");
});

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

  
RTCXFluDeviceShareCountListReq req = RTCXFluDeviceShareCountListReq(
pageNo: 1,
pageSize: 200,
);

shareApi
.getDeviceShareCountList(req)
.then((RTCXFluShareCountListModel value) {
print(
"getDeviceShareCountList value maxShareCount:${value.maxShareCount}, items:${value.items}",
);
})
.catchError((error) {
print("getDeviceShareCountList error:${error.toString()}");
});