@tencentcloud/sdk-mcp 1.7.7 → 1.7.9-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +7 -9
- package/index.js +8 -8
- package/knowledge/chunker.js +1 -0
- package/knowledge/doc-url-resolver.js +16 -9
- package/knowledge/embedding/build-vectors.js +92 -0
- package/knowledge/embedding/embed-model.js +41 -0
- package/knowledge/embedding/vector-augment.js +126 -0
- package/knowledge/embedding/vector-index.js +70 -0
- package/knowledge/frontmatter-meta.js +23 -0
- package/knowledge/path-meta.js +56 -0
- package/knowledge/search/exact-lookup.js +145 -16
- package/knowledge/search/filter-pool.js +77 -33
- package/knowledge/search/rank-profile.js +25 -0
- package/knowledge/search/requires-framework.js +4 -1
- package/knowledge/search/search-core.js +74 -13
- package/knowledge/search/search-knowledge.js +24 -34
- package/knowledge/search/search-pass.js +495 -169
- package/knowledge/search/url-row-scorer.js +24 -6
- package/package.json +3 -1
- package/resource/index/manifest.json +1 -1
- package/resource/index/vectors/index.json +4 -0
- package/resource/integration/callkit/preset/android/integration.md +0 -2
- package/resource/integration/callkit/preset/ios/integration.md +0 -2
- package/resource/integration/chat/preset/react/integration.md +9 -5
- package/resource/integration/chat/preset/uni-app/integration.md +4 -0
- package/resource/integration/chat/preset/vue/integration.md +10 -6
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +0 -4
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +0 -4
- package/resource/integration/roomkit/preset/vue/integration.md +154 -208
- package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +0 -2
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +0 -4
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +0 -2
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -4
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -2
- package/resource/knowledge/callkit/faq/ios.md +0 -2
- package/resource/knowledge/callkit/faq/uniapp-app.md +0 -2
- package/resource/knowledge/callkit/preset/miniprogram/integration.md +2 -3
- package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +0 -2
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -16
- package/resource/knowledge/chat/preset/react/h5/integration.md +16 -5
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +6 -3
- package/resource/knowledge/chat/preset/vue/h5/integration.md +7 -4
- package/resource/knowledge/iot/app/activate-service.md +95 -0
- package/resource/knowledge/iot/app/demo/android.md +93 -0
- package/resource/knowledge/iot/app/demo/ios.md +87 -0
- package/resource/knowledge/iot/app/demo/miniprogram.md +79 -0
- package/resource/knowledge/iot/app/device-binding.md +378 -0
- package/resource/knowledge/iot/app/device-sharing.md +414 -0
- package/resource/knowledge/iot/app/family-management.md +762 -0
- package/resource/knowledge/iot/app/integration/android.md +328 -0
- package/resource/knowledge/iot/app/integration/harmonyos.md +326 -0
- package/resource/knowledge/iot/app/integration/ios.md +351 -0
- package/resource/knowledge/iot/app/integration/miniprogram.md +268 -0
- package/resource/knowledge/iot/app/monitor-playback.md +557 -0
- package/resource/knowledge/iot/app/remote-control.md +139 -0
- package/resource/knowledge/iot/app/video-call.md +559 -0
- package/resource/knowledge/iot/app/wechat-call/device-call-miniprogram.md +204 -0
- package/resource/knowledge/iot/app/wechat-call/miniprogram-call-device.md +193 -0
- package/resource/knowledge/iot/client-api/app/android/txiotcallsession.md +189 -0
- package/resource/knowledge/iot/client-api/app/android/txiotcloudstorage.md +77 -0
- package/resource/knowledge/iot/client-api/app/android/txiotdevicemanager.md +175 -0
- package/resource/knowledge/iot/client-api/app/android/txiotengine.md +172 -0
- package/resource/knowledge/iot/client-api/app/android/txiotenginedef.md +163 -0
- package/resource/knowledge/iot/client-api/app/android/txiotfamilymanager.md +146 -0
- package/resource/knowledge/iot/client-api/app/android/txiotmonitorsession.md +246 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotcallsession.md +191 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotcloudstorage.md +77 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotdevicemanager.md +183 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotengine.md +186 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotenginedef.md +164 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotfamilymanager.md +150 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotmonitorsession.md +252 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotcallsession.md +199 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotcloudstorage.md +76 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotdevicemanager.md +173 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotengine.md +173 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotenginedef.md +171 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotfamilymanager.md +146 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotmonitorsession.md +250 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotcallsession.md +180 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotcloudstorage.md +76 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotdevicemanager.md +281 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotengine.md +183 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotenginedef.md +152 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotfamilymanager.md +179 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotmonitorsession.md +226 -0
- package/resource/knowledge/iot/client-api/device/android-smart-device.md +813 -0
- package/resource/knowledge/iot/client-api/device/linux-rtos-device.md +2027 -0
- package/resource/knowledge/iot/device/activate-service.md +167 -0
- package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/custom-agent.md +171 -0
- package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/smart-device-control.md +721 -0
- package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/android-smart-device.md +247 -0
- package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/linux-rtos-device.md +368 -0
- package/resource/knowledge/iot/device/ai-voice-chat/overview.md +84 -0
- package/resource/knowledge/iot/device/cloud-storage.md +696 -0
- package/resource/knowledge/iot/device/data-model.md +972 -0
- package/resource/knowledge/iot/device/demo/android-smart-device.md +97 -0
- package/resource/knowledge/iot/device/demo/linux-rtos-device.md +106 -0
- package/resource/knowledge/iot/device/device-ota-upgrade.md +237 -0
- package/resource/knowledge/iot/device/dynamic-registration/android-smart-device.md +275 -0
- package/resource/knowledge/iot/device/dynamic-registration/linux-rtos-device.md +297 -0
- package/resource/knowledge/iot/device/login-and-register/android-smart-device.md +131 -0
- package/resource/knowledge/iot/device/login-and-register/linux-rtos-device.md +291 -0
- package/resource/knowledge/iot/device/monitor-pushing/android-smart-device.md +237 -0
- package/resource/knowledge/iot/device/monitor-pushing/linux-rtos-device.md +493 -0
- package/resource/knowledge/iot/device/video-call/android-smart-device.md +299 -0
- package/resource/knowledge/iot/device/video-call/linux-rtos-device.md +465 -0
- package/resource/knowledge/iot/device/wechat-call/android-smart-device.md +534 -0
- package/resource/knowledge/iot/device/wechat-call/linux-rtos-device.md +681 -0
- package/resource/knowledge/iot/kids-watch/overview.md +28 -0
- package/resource/knowledge/iot/security-camera/activate-service.md +74 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/app-integration.md +302 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/android.md +237 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/linux-rtos.md +493 -0
- package/resource/knowledge/iot/security-camera/overview.md +31 -0
- package/resource/knowledge/iot/security-camera/ptz-control.md +153 -0
- package/resource/knowledge/iot/security-camera/recording-and-snapshot.md +182 -0
- package/resource/knowledge/iot/security-camera/voice-intercom.md +174 -0
- package/resource/knowledge/iot/smart-vision/serviceoverview.md +114 -0
- package/resource/knowledge/iot/voice-recorder/app-demo.md +99 -0
- package/resource/knowledge/iot/voice-recorder/device-demo.md +189 -0
- package/resource/knowledge/iot/voice-recorder/overview.md +64 -0
- package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/android/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/android/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +0 -2
- package/resource/knowledge/livekit/faq/error-code.md +0 -2
- package/resource/knowledge/push/config/android/honor.md +16 -1
- package/resource/knowledge/push/config/android/huawei.md +20 -4
- package/resource/knowledge/push/config/android/meizu.md +19 -5
- package/resource/knowledge/push/config/android/vivo.md +20 -1
- package/resource/knowledge/push/config/donut.md +0 -2
- package/resource/knowledge/push/config/harmonyos.md +21 -5
- package/resource/knowledge/push/integration/android.md +0 -5
- package/resource/knowledge/push/integration/donut.md +0 -3
- package/resource/knowledge/push/integration/flutter.md +1 -4
- package/resource/knowledge/push/integration/harmonyos.md +0 -3
- package/resource/knowledge/push/integration/ios.md +0 -3
- package/resource/knowledge/push/integration/react-native.md +0 -5
- package/resource/knowledge/push/integration/uni-app.md +0 -3
- package/resource/knowledge/push/integration/unity.md +0 -3
- package/resource/knowledge/push/integration/unreal-engine.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +18 -14
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +30 -0
- package/resource/knowledge/rtcengine/web/plugin/24-advanced-network-quality.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +4 -0
- package/resource/knowledge/trtc/android/TRTCCloud.md +94 -85
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +48 -46
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +48 -48
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +18 -18
- package/resource/knowledge/trtc/android/TXDeviceManager.md +4 -4
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +90 -90
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +18 -18
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +9 -9
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +47 -47
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +47 -45
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +93 -93
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +50 -50
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +8 -8
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +9 -9
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +48 -46
- package/server-config.js +8 -9
- package/server.js +1 -1
- package/tools/common/finalize_answer.js +1 -1
- package/tools/common/present_framework_choice.js +1 -1
- package/tools/common/search_trtc_knowledge.js +22 -3
- package/tools/definitions/search_trtc_knowledge_def.js +3 -2
- package/utils/preflight-route.js +19 -2
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
---
|
|
2
|
+
product: iot
|
|
3
|
+
framework:
|
|
4
|
+
- '*'
|
|
5
|
+
types:
|
|
6
|
+
- feature
|
|
7
|
+
retrievable_scope: always
|
|
8
|
+
feature_domain: app
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本文介绍如何使用腾讯云物联网(IoT)应用端 SDK 的 `TXIoTDeviceManager` 把一台已绑定设备的使用权授予其他账号,包括生成分享凭据、接受分享、查询与撤销共享关系。设备本身的绑定与解绑,参见 设备绑定;把成员加入家庭以获得家庭下全部设备的权限,参见 家庭管理。
|
|
12
|
+
|
|
13
|
+
> **说明:**
|
|
14
|
+
> 设备分享与设备绑定是两条独立链路:**绑定**把设备纳入某个家庭,需要业务后台签发的设备绑定签名;**分享**把已绑定设备的使用权授予另一个账号,只需要设备拥有者生成的分享 Token,不改变设备的家庭归属。
|
|
15
|
+
>
|
|
16
|
+
|
|
17
|
+
## 前提条件
|
|
18
|
+
|
|
19
|
+
在使用设备分享能力前,请确保已完成以下准备工作:
|
|
20
|
+
- 已开通腾讯云物联网相关服务,并在控制台完成实例、应用和设备的准备工作。可参见 开通服务。
|
|
21
|
+
|
|
22
|
+
- 已在客户端工程中集成 IoT 应用端 SDK 并完成登录。可参见 Android SDK 集成与登录、iOS SDK 集成与登录、小程序 SDK 集成与登录。
|
|
23
|
+
|
|
24
|
+
- **分享方**:目标设备已绑定到当前登录账户名下,且当前用户是设备拥有者。可参见 设备绑定。
|
|
25
|
+
|
|
26
|
+
- **接收方**:已获得设备拥有者提供的分享 Token,以及设备的 `productId` 与 `deviceName`。
|
|
27
|
+
|
|
28
|
+
## 获取设备管理对象
|
|
29
|
+
|
|
30
|
+
分享相关接口均由 `TXIoTDeviceManager` 提供。登录成功后,通过 `TXIoTEngine` 单例获取该对象,可长期持有。
|
|
31
|
+
|
|
32
|
+
【Android】
|
|
33
|
+
``` java
|
|
34
|
+
TXIoTEngine iotEngine = TXIoTEngine.getInstance(context);
|
|
35
|
+
TXIoTDeviceManager deviceManager = iotEngine.getDeviceManager();
|
|
36
|
+
if (deviceManager == null) {
|
|
37
|
+
// SDK 未登录或登录已过期,请先完成登录。
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
【iOS】
|
|
43
|
+
``` objectivec
|
|
44
|
+
TXIoTDeviceManager *deviceManager = [[TXIoTEngine getInstance] getDeviceManager];
|
|
45
|
+
if (deviceManager == nil) {
|
|
46
|
+
// SDK 未登录或登录已过期,请先完成登录。
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
【小程序】
|
|
52
|
+
``` typescript
|
|
53
|
+
const { TXIoTEngine } = requirePlugin('tx-iot-sdk');
|
|
54
|
+
|
|
55
|
+
// getInstance 为异步方法,首次调用会等待内部模块加载完成。
|
|
56
|
+
const iotEngine = await TXIoTEngine.getInstance();
|
|
57
|
+
const deviceManager = iotEngine.getDeviceManager();
|
|
58
|
+
if (deviceManager == null) {
|
|
59
|
+
// SDK 未登录或登录已过期,请先完成登录。
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
> **说明:**
|
|
65
|
+
> `getDeviceManager` 返回空值(Android 与小程序为 `null`,iOS 为 `nil`)表示 SDK 尚未登录或登录已过期。请在登录成功回调之后再获取该对象,不要在 App 启动阶段提前缓存。
|
|
66
|
+
>
|
|
67
|
+
|
|
68
|
+
## 分享模型
|
|
69
|
+
|
|
70
|
+
设备分享用于把**单台**已绑定设备的使用权授予其他账号,典型场景是把门口摄像头分享给家政人员,或把设备临时授权给亲友查看。
|
|
71
|
+
- 分享不改变设备的家庭归属,被分享用户不会成为设备所属家庭的成员。
|
|
72
|
+
|
|
73
|
+
- 被分享设备不出现在被分享用户的 `getDeviceList` 结果中,需通过 `getDeviceListSharedWithMe` 单独查询。
|
|
74
|
+
|
|
75
|
+
- 分享关系可由设备拥有者单方面撤销,也可由被分享用户自行取消。
|
|
76
|
+
|
|
77
|
+
> **注意:**
|
|
78
|
+
>
|
|
79
|
+
> 设备分享 Token 与家庭邀请 Token 是两种不同的凭据,不可混用:家庭邀请 Token 用于加入家庭并获得该家庭下所有设备的权限,设备分享 Token 只对指定的一台设备生效。两者均属敏感凭据,请通过可信渠道传递,并避免在日志中明文输出。
|
|
80
|
+
>
|
|
81
|
+
|
|
82
|
+
完整分享流程如下:
|
|
83
|
+
|
|
84
|
+
1. 设备拥有者调用 `createDeviceSharingToken`,传入 `familyId` 与目标 `deviceId`,得到分享 Token。
|
|
85
|
+
|
|
86
|
+
2. 拥有者通过业务自有渠道(如二维码、站内消息)把 Token 与设备的 `productId`、`deviceName` 一并发送给被分享用户。
|
|
87
|
+
|
|
88
|
+
3. 被分享用户登录 SDK 后调用 `bindDeviceSharedWithMe`,传入 `deviceId` 与 Token 完成接收。
|
|
89
|
+
|
|
90
|
+
4. 被分享用户通过 `getDeviceListSharedWithMe` 查询自己收到的共享设备。
|
|
91
|
+
|
|
92
|
+
## 创建分享 Token 与接受分享
|
|
93
|
+
|
|
94
|
+
|方法|说明|
|
|
95
|
+
|---------|---------|
|
|
96
|
+
|createDeviceSharingToken|设备拥有者生成分享 Token,需传入 `familyId` 与 `deviceId`。由拥有者调用,被分享用户无此权限。|
|
|
97
|
+
|bindDeviceSharedWithMe|被分享用户使用 Token 接收共享设备,需同时传入设备的 `deviceId` 与 Token,两者不匹配将绑定失败。|
|
|
98
|
+
|
|
99
|
+
【Android】
|
|
100
|
+
``` java
|
|
101
|
+
// 设备拥有者:创建分享 Token。
|
|
102
|
+
deviceManager.createDeviceSharingToken(familyId, deviceId, new TXIoTCallback<String>() {
|
|
103
|
+
@Override
|
|
104
|
+
public void onSuccess(String shareToken) {
|
|
105
|
+
// 将 shareToken 与 deviceId 一并通过业务自有渠道发送给被分享用户。
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@Override
|
|
109
|
+
public void onError(TXIoTErrorCode errorCode, String errorMessage) {
|
|
110
|
+
// 创建分享 Token 失败,请根据错误码和错误信息处理。
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// 被分享用户:使用 Token 接收共享设备。
|
|
115
|
+
deviceManager.bindDeviceSharedWithMe(deviceId, shareToken, new TXIoTCallback<Void>() {
|
|
116
|
+
@Override
|
|
117
|
+
public void onSuccess(Void result) {
|
|
118
|
+
// 接收成功,可调用 getDeviceListSharedWithMe 刷新共享设备列表。
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@Override
|
|
122
|
+
public void onError(TXIoTErrorCode errorCode, String errorMessage) {
|
|
123
|
+
// 接收失败,请检查 Token 是否过期,以及 deviceId 与 Token 是否匹配。
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
【iOS】
|
|
129
|
+
``` objectivec
|
|
130
|
+
// 设备拥有者:创建分享 Token。
|
|
131
|
+
TXIoTCallback<NSString *> *shareCallback = [[TXIoTCallback alloc] init];
|
|
132
|
+
shareCallback.onSuccess = ^(NSString *shareToken) {
|
|
133
|
+
// 将 shareToken 与 deviceId 一并通过业务自有渠道发送给被分享用户。
|
|
134
|
+
};
|
|
135
|
+
shareCallback.onError = ^(TXIoTErrorCode errorCode, NSString *errorMessage) {
|
|
136
|
+
// 创建分享 Token 失败,请根据错误码和错误信息处理。
|
|
137
|
+
};
|
|
138
|
+
[deviceManager createDeviceSharingToken:familyId deviceId:deviceId callback:shareCallback];
|
|
139
|
+
|
|
140
|
+
// 被分享用户:使用 Token 接收共享设备。
|
|
141
|
+
TXIoTVoidCallback *bindSharedCallback = [[TXIoTVoidCallback alloc] init];
|
|
142
|
+
bindSharedCallback.onSuccess = ^{
|
|
143
|
+
// 接收成功,可调用 getDeviceListSharedWithMe 刷新共享设备列表。
|
|
144
|
+
};
|
|
145
|
+
bindSharedCallback.onError = ^(TXIoTErrorCode errorCode, NSString *errorMessage) {
|
|
146
|
+
// 接收失败,请检查 Token 是否过期,以及 deviceId 与 Token 是否匹配。
|
|
147
|
+
};
|
|
148
|
+
[deviceManager bindDeviceSharedWithMe:deviceId
|
|
149
|
+
shareToken:shareToken
|
|
150
|
+
callback:bindSharedCallback];
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
【小程序】
|
|
154
|
+
``` typescript
|
|
155
|
+
// 设备拥有者:创建分享 Token。
|
|
156
|
+
try {
|
|
157
|
+
const shareToken = await deviceManager.createDeviceSharingToken(familyId, deviceId);
|
|
158
|
+
// 将 shareToken 与 deviceId 一并通过业务自有渠道发送给被分享用户。
|
|
159
|
+
} catch (err) {
|
|
160
|
+
// 创建分享 Token 失败,请根据 err.code 和 err.message 处理。
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// 被分享用户:使用 Token 接收共享设备。
|
|
164
|
+
try {
|
|
165
|
+
await deviceManager.bindDeviceSharedWithMe(deviceId, shareToken);
|
|
166
|
+
// 接收成功,可调用 getDeviceListSharedWithMe 刷新共享设备列表。
|
|
167
|
+
} catch (err) {
|
|
168
|
+
// 接收失败,请检查 Token 是否过期,以及 deviceId 与 Token 是否匹配。
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## 拥有者管理共享用户
|
|
173
|
+
|
|
174
|
+
设备拥有者可查询某台设备已分享给哪些用户,并撤销指定用户的权限。
|
|
175
|
+
|
|
176
|
+
|方法|说明|
|
|
177
|
+
|---------|---------|
|
|
178
|
+
|getDeviceSharedUsers|查询指定设备的共享用户列表,返回 TXIoTUserInfo 列表,其中 `deviceBindTime` 为该用户接收分享的时间。|
|
|
179
|
+
|removeDeviceSharedUser|撤销指定用户对该设备的访问权限,`userId` 取自 `getDeviceSharedUsers` 的返回结果。|
|
|
180
|
+
|
|
181
|
+
【Android】
|
|
182
|
+
``` java
|
|
183
|
+
// 先查询共享用户列表,再基于返回的 userId 执行撤销。
|
|
184
|
+
deviceManager.getDeviceSharedUsers(deviceId, new TXIoTCallback<List<TXIoTUserInfo>>() {
|
|
185
|
+
@Override
|
|
186
|
+
public void onSuccess(List<TXIoTUserInfo> userList) {
|
|
187
|
+
for (TXIoTUserInfo user : userList) {
|
|
188
|
+
// user.userId / user.nickName / user.avatarUrl / user.deviceBindTime
|
|
189
|
+
}
|
|
190
|
+
if (!userList.isEmpty()) {
|
|
191
|
+
String userId = userList.get(0).userId;
|
|
192
|
+
deviceManager.removeDeviceSharedUser(deviceId, userId, new TXIoTCallback<Void>() {
|
|
193
|
+
@Override
|
|
194
|
+
public void onSuccess(Void result) {
|
|
195
|
+
// 撤销成功。
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
@Override
|
|
199
|
+
public void onError(TXIoTErrorCode errorCode, String errorMessage) {
|
|
200
|
+
// 撤销失败,请根据错误码和错误信息处理。
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@Override
|
|
207
|
+
public void onError(TXIoTErrorCode errorCode, String errorMessage) {
|
|
208
|
+
// 查询共享用户失败,请根据错误码和错误信息处理。
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
【iOS】
|
|
214
|
+
``` objectivec
|
|
215
|
+
// 先查询共享用户列表,再基于返回的 userId 执行撤销。
|
|
216
|
+
TXIoTCallback<NSArray<TXIoTUserInfo *> *> *usersCallback = [[TXIoTCallback alloc] init];
|
|
217
|
+
usersCallback.onSuccess = ^(NSArray<TXIoTUserInfo *> *userList) {
|
|
218
|
+
if (userList.count == 0) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
NSString *userId = userList.firstObject.userId;
|
|
222
|
+
TXIoTVoidCallback *removeCallback = [[TXIoTVoidCallback alloc] init];
|
|
223
|
+
removeCallback.onSuccess = ^{
|
|
224
|
+
// 撤销成功。
|
|
225
|
+
};
|
|
226
|
+
removeCallback.onError = ^(TXIoTErrorCode errorCode, NSString *errorMessage) {
|
|
227
|
+
// 撤销失败,请根据错误码和错误信息处理。
|
|
228
|
+
};
|
|
229
|
+
[deviceManager removeDeviceSharedUser:deviceId
|
|
230
|
+
userId:userId
|
|
231
|
+
callback:removeCallback];
|
|
232
|
+
};
|
|
233
|
+
usersCallback.onError = ^(TXIoTErrorCode errorCode, NSString *errorMessage) {
|
|
234
|
+
// 查询共享用户失败,请根据错误码和错误信息处理。
|
|
235
|
+
};
|
|
236
|
+
[deviceManager getDeviceSharedUsers:deviceId callback:usersCallback];
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
【小程序】
|
|
240
|
+
``` typescript
|
|
241
|
+
// 先查询共享用户列表,再基于返回的 userId 执行撤销。
|
|
242
|
+
try {
|
|
243
|
+
const userList = await deviceManager.getDeviceSharedUsers(deviceId);
|
|
244
|
+
for (const user of userList) {
|
|
245
|
+
// user.userId / user.nickName / user.avatarUrl / user.deviceBindTime
|
|
246
|
+
}
|
|
247
|
+
if (userList.length > 0) {
|
|
248
|
+
const userId = userList[0].userId;
|
|
249
|
+
await deviceManager.removeDeviceSharedUser(deviceId, userId);
|
|
250
|
+
// 撤销成功。
|
|
251
|
+
}
|
|
252
|
+
} catch (err) {
|
|
253
|
+
// 查询或撤销失败,请根据 err.code 和 err.message 处理。
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## 被分享用户管理共享设备
|
|
258
|
+
|
|
259
|
+
被分享用户可分页查询所有分享给自己的设备,也可主动取消接收。
|
|
260
|
+
|
|
261
|
+
|方法|说明|
|
|
262
|
+
|---------|---------|
|
|
263
|
+
|getDeviceListSharedWithMe|分页查询所有分享给当前用户的设备,**不需要传** `familyId`。分页规则与 `getDeviceList` 一致:首次传空字符串,`nextPageToken` 为空字符串表示已是最后一页。|
|
|
264
|
+
|unbindDeviceSharedWithMe|取消接收分享的设备,只需传入 `deviceId`。取消后不再拥有该设备的访问权限,但不影响设备与其拥有者的绑定关系。|
|
|
265
|
+
|
|
266
|
+
【Android】
|
|
267
|
+
``` java
|
|
268
|
+
// 查询分享给我的设备(首次传空字符串)。
|
|
269
|
+
deviceManager.getDeviceListSharedWithMe("", new TXIoTCallback<TXIoTPageResult<TXIoTDeviceInfo>>() {
|
|
270
|
+
@Override
|
|
271
|
+
public void onSuccess(TXIoTPageResult<TXIoTDeviceInfo> pageResult) {
|
|
272
|
+
List<TXIoTDeviceInfo> sharedDevices = pageResult.dataList;
|
|
273
|
+
String nextPageToken = pageResult.nextPageToken;
|
|
274
|
+
// nextPageToken 非空时原样回传以获取下一页。
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@Override
|
|
278
|
+
public void onError(TXIoTErrorCode errorCode, String errorMessage) {
|
|
279
|
+
// 查询共享设备列表失败,请根据错误码和错误信息处理。
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
// 取消接收共享设备。
|
|
284
|
+
deviceManager.unbindDeviceSharedWithMe(deviceId, new TXIoTCallback<Void>() {
|
|
285
|
+
@Override
|
|
286
|
+
public void onSuccess(Void result) {
|
|
287
|
+
// 取消成功。
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
@Override
|
|
291
|
+
public void onError(TXIoTErrorCode errorCode, String errorMessage) {
|
|
292
|
+
// 取消失败,请根据错误码和错误信息处理。
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
【iOS】
|
|
298
|
+
``` objectivec
|
|
299
|
+
// 查询分享给我的设备(首次传空字符串)。
|
|
300
|
+
TXIoTCallback<TXIoTPageResult<TXIoTDeviceInfo *> *> *sharedListCallback = [[TXIoTCallback alloc] init];
|
|
301
|
+
sharedListCallback.onSuccess = ^(TXIoTPageResult<TXIoTDeviceInfo *> *pageResult) {
|
|
302
|
+
NSArray<TXIoTDeviceInfo *> *sharedDevices = pageResult.dataList;
|
|
303
|
+
NSString *nextPageToken = pageResult.nextPageToken;
|
|
304
|
+
// nextPageToken 非空时原样回传以获取下一页。
|
|
305
|
+
};
|
|
306
|
+
sharedListCallback.onError = ^(TXIoTErrorCode errorCode, NSString *errorMessage) {
|
|
307
|
+
// 查询共享设备列表失败,请根据错误码和错误信息处理。
|
|
308
|
+
};
|
|
309
|
+
[deviceManager getDeviceListSharedWithMe:@"" callback:sharedListCallback];
|
|
310
|
+
|
|
311
|
+
// 取消接收共享设备。
|
|
312
|
+
TXIoTVoidCallback *unbindSharedCallback = [[TXIoTVoidCallback alloc] init];
|
|
313
|
+
unbindSharedCallback.onSuccess = ^{
|
|
314
|
+
// 取消成功。
|
|
315
|
+
};
|
|
316
|
+
unbindSharedCallback.onError = ^(TXIoTErrorCode errorCode, NSString *errorMessage) {
|
|
317
|
+
// 取消失败,请根据错误码和错误信息处理。
|
|
318
|
+
};
|
|
319
|
+
[deviceManager unbindDeviceSharedWithMe:deviceId callback:unbindSharedCallback];
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
【小程序】
|
|
323
|
+
``` typescript
|
|
324
|
+
// 查询分享给我的设备(首次传空字符串)。
|
|
325
|
+
try {
|
|
326
|
+
const pageResult = await deviceManager.getDeviceListSharedWithMe('');
|
|
327
|
+
const sharedDevices = pageResult.dataList;
|
|
328
|
+
const nextPageToken = pageResult.nextPageToken;
|
|
329
|
+
// nextPageToken 非空时原样回传以获取下一页。
|
|
330
|
+
} catch (err) {
|
|
331
|
+
// 查询共享设备列表失败,请根据 err.code 和 err.message 处理。
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// 取消接收共享设备。
|
|
335
|
+
try {
|
|
336
|
+
await deviceManager.unbindDeviceSharedWithMe(deviceId);
|
|
337
|
+
// 取消成功。
|
|
338
|
+
} catch (err) {
|
|
339
|
+
// 取消失败,请根据 err.code 和 err.message 处理。
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## 错误处理
|
|
344
|
+
|
|
345
|
+
设备分享链路常见的错误码如下,完整定义参见 TXIoTErrorCode。
|
|
346
|
+
|
|
347
|
+
【Android】
|
|
348
|
+
|
|
349
|
+
|错误码|说明|建议处理方式|
|
|
350
|
+
|---------|---------|---------|
|
|
351
|
+
|`ERR_INVALID_PARAMETER`|参数不合法。|检查 `productId`、`deviceName`、`familyId`、分享 Token、`userId` 是否为空。|
|
|
352
|
+
|`ERR_INVALID_ACCESS_TOKEN`|登录凭证无效。|重新登录 SDK,并重新获取设备管理对象。|
|
|
353
|
+
|`ERR_UNAUTHORIZED_OPERATION`|当前用户无权限。|创建分享 Token 与撤销共享用户仅设备拥有者可执行,被分享用户调用会返回该错误。|
|
|
354
|
+
|`ERR_DEVICE_NOT_EXIST`|设备不存在。|检查 `productId` 与 `deviceName` 是否正确,以及设备是否仍处于绑定状态。|
|
|
355
|
+
|`ERR_DEVICE_OFFLINE`|设备离线。|分享关系本身不受在线状态影响;若后续拉流或控制失败,引导用户检查设备网络。|
|
|
356
|
+
|`ERR_RATE_LIMITED`|请求被限频。|降低调用频率,避免高频轮询共享用户列表或共享设备列表。|
|
|
357
|
+
|
|
358
|
+
【iOS】
|
|
359
|
+
|
|
360
|
+
|错误码|说明|建议处理方式|
|
|
361
|
+
|---------|---------|---------|
|
|
362
|
+
|`TXIoTErrorCodeInvalidParameter`|参数不合法。|检查 `productId`、`deviceName`、`familyId`、分享 Token、`userId` 是否为空。|
|
|
363
|
+
|`TXIoTErrorCodeInvalidAccessToken`|登录凭证无效。|重新登录 SDK,并重新获取设备管理对象。|
|
|
364
|
+
|`TXIoTErrorCodeUnauthorizedOperation`|当前用户无权限。|创建分享 Token 与撤销共享用户仅设备拥有者可执行,被分享用户调用会返回该错误。|
|
|
365
|
+
|`TXIoTErrorCodeDeviceNotExist`|设备不存在。|检查 `productId` 与 `deviceName` 是否正确,以及设备是否仍处于绑定状态。|
|
|
366
|
+
|`TXIoTErrorCodeDeviceOffline`|设备离线。|分享关系本身不受在线状态影响;若后续拉流或控制失败,引导用户检查设备网络。|
|
|
367
|
+
|`TXIoTErrorCodeRateLimited`|请求被限频。|降低调用频率,避免高频轮询共享用户列表或共享设备列表。|
|
|
368
|
+
|
|
369
|
+
【小程序】
|
|
370
|
+
|
|
371
|
+
|错误码|说明|建议处理方式|
|
|
372
|
+
|---------|---------|---------|
|
|
373
|
+
|`InvalidParameter`|参数不合法。|检查 `productId`、`deviceName`、`familyId`、分享 Token、`userId` 是否为空。|
|
|
374
|
+
|`InvalidAccessToken`|登录凭证无效。|重新登录 SDK,并重新获取设备管理对象。|
|
|
375
|
+
|`UnauthorizedOperation`|当前用户无权限。|创建分享 Token 与撤销共享用户仅设备拥有者可执行,被分享用户调用会返回该错误。|
|
|
376
|
+
|`DeviceNotExist`|设备不存在。|检查 `productId` 与 `deviceName` 是否正确,以及设备是否仍处于绑定状态。|
|
|
377
|
+
|`DeviceOffline`|设备离线。|分享关系本身不受在线状态影响;若后续拉流或控制失败,引导用户检查设备网络。|
|
|
378
|
+
|`RateLimited`|请求被限频。|降低调用频率,避免高频轮询共享用户列表或共享设备列表。|
|
|
379
|
+
|
|
380
|
+
## 常见问题
|
|
381
|
+
|
|
382
|
+
### 设备分享和把成员加入家庭有什么区别?
|
|
383
|
+
|
|
384
|
+
两者的授权粒度不同:
|
|
385
|
+
- **加入家庭**:被邀请用户成为家庭成员,可访问该家庭下的**全部**设备,后续新绑定的设备也自动可见。适用于家人共用。
|
|
386
|
+
|
|
387
|
+
- **设备分享**:被分享用户只获得**指定单台设备**的使用权,不进入家庭,也看不到家庭内的其他设备。适用于临时授权给外部人员。
|
|
388
|
+
|
|
389
|
+
被分享的设备不出现在 `getDeviceList` 的结果中,必须通过 `getDeviceListSharedWithMe` 查询。
|
|
390
|
+
|
|
391
|
+
### 解绑设备后,之前分享出去的用户还能访问吗?
|
|
392
|
+
|
|
393
|
+
不能。设备解绑意味着它从该家庭中被移除,依附于这台设备的分享关系随之失效。若需要将设备迁移到另一个家庭,请先解绑,再用新的设备绑定签名绑定到目标家庭,绑定完成后需重新创建分享 Token 并让对方重新接收。
|
|
394
|
+
|
|
395
|
+
### 被分享用户能对设备做哪些操作?
|
|
396
|
+
|
|
397
|
+
被分享用户获得的是该台设备的**使用权**,可以拉流监控、发起通话、下发控制命令;但不具备管理权:无法解绑设备、无法修改设备别名与房间归属、无法再把该设备转分享给第三方,也看不到设备所属家庭内的其他设备。
|
|
398
|
+
|
|
399
|
+
### 同一台设备可以分享给多少个用户?
|
|
400
|
+
|
|
401
|
+
`getDeviceSharedUsers` 单次最多返回 100 条共享用户记录且不支持分页,因此建议在产品侧把单台设备的共享用户数控制在 100 以内,避免列表展示不全。
|
|
402
|
+
|
|
403
|
+
## 接口参考
|
|
404
|
+
|
|
405
|
+
本文涉及接口的完整定义参见:
|
|
406
|
+
- TXIoTDeviceManager(Android)
|
|
407
|
+
|
|
408
|
+
- TXIoTDeviceManager(iOS)
|
|
409
|
+
|
|
410
|
+
- TXIoTDeviceManager(小程序)
|
|
411
|
+
|
|
412
|
+
- TXIoTEngineDef(数据结构与错误码)
|
|
413
|
+
|
|
414
|
+
设备的绑定与解绑参见 设备绑定,家庭成员与房间的管理参见 家庭管理。接收到共享设备后,可继续接入 远程控制。
|