智慧保安APP验收版本
shuishen
2021-12-02 56ee0734fc0cbca40f992823a636ec8feebd1f80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
//
//  ARtcChannelDelegate.h
//  ARtcKit
//
//  Created by 余生丶 on 2020/3/24.
//  Copyright © 2020 zjq. All rights reserved.
//
 
#ifndef ARtcChannelDelegate_h
#define ARtcChannelDelegate_h
 
@protocol ARtcChannelDelegate <NSObject>
 
@optional
 
/** 发生警告回调
 
@param rtcChannel   ARtcChannel 类。
@param warningCode   ARWarningCode
*/
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurWarning:(ARWarningCode)warningCode;
 
/** 发生错误回调
 
@param rtcChannel   ARtcChannel 类。
@param errorCode   ARErrorCode
*/
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurError:(ARErrorCode)errorCode;
 
/** 加入频道回调
 
@param rtcChannel   ARtcChannel 类。
@param uid   用户ID
@param elapsed   从调用joinChannelByToken开始到发生此事件过去的时间(ms)。
*/
- (void)rtcChannelDidJoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
 
/** 重新加入频道回调
 
@param rtcChannel   ARtcChannel 类。
@param uid   用户ID
@param elapsed   从开始重连到重连成功的时间(ms)。
*/
- (void)rtcChannelDidRejoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
 
/** 已离开频道回调
 
当用户调用 leaveChannel 离开频道后,SDK 会触发该回调。在该回调方法中,App 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。
 
@param rtcChannel  ARtcChannel 类。
@param stats   通话相关的统计信息:ARChannelStats
*/
- (void)rtcChannelDidLeaveChannel:(ARtcChannel *_Nonnull)rtcChannel withStats:(ARChannelStats *_Nonnull)stats;
 
/** 用户角色已切换回调
 
直播场景下,当本地用户在加入频道后调用 setClientRole 切换角色时会触发此回调,即主播切换为观众时,或观众切换为主播时。
 
@param rtcChannel ARtcChannel 类。
@param oldRole   切换前的角色
@param newRole   切换后的角色
*/
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didClientRoleChanged:(ARClientRole)oldRole newRole:(ARClientRole)newRole;
 
/** 远端用户/主播加入回调
 
@param rtcChannel ARtcChannel 类。
@param uid   新加入频道的远端用户/主播 ID。如果 joinChannelByToken 中指定了 uid,则此处返回该 ID;否则使用ar云平台服务器自动分配的 ID。
@param elapsed   从本地用户加入频道 joinChannelByToken开始到发生此事件过去的时间(ms)。
*/
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didJoinedOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
 
/** 远端用户(通信场景)/主播(直播场景)离开当前频道回调
 
@param rtcChannel ARtcChannel 类。
@param uid   离线的用户 ID。
@param reason   离线原因,详见 ARUserOfflineReason。
*/
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOfflineOfUid:(NSString *_Nonnull)uid reason:(ARUserOfflineReason)reason;
 
/** 网络连接状态已改变回调
 
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
 
@param rtcChannel ARtcChannel 类。
@param state 当前的网络连接状态,详见 ARConnectionStateType。
@param reason 引起网络连接状态发生改变的原因,详见 ARConnectionChangedReason。
*/
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel connectionChangedToState:(ARConnectionStateType)state reason:(ARConnectionChangedReason)reason;
 
/** 网络连接中断,且 SDK 无法在 10 秒内连接服务器回调
 
SDK 在调用 joinChannelByToken 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
 
如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
 
@param rtcChannel ARtcChannel 类。
 */
- (void)rtcChannelDidLost:(ARtcChannel * _Nonnull)rtcChannel;
 
/** Token 服务即将过期回调
 
 在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒应用程序更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
 
 @param rtcChannel  ARtcChannel 类。
 @param token  即将服务失效的 Token
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel tokenPrivilegeWillExpire:(NSString *_Nonnull)token;
 
/** Token 过期回调
 
在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。 该回调通知 App 需要生成新的 Token,并需调用 renewToken 为 SDK 指定新的 Token。
 
@param rtcChannel  ARtcChannel 类。
*/
- (void)rtcChannelRequestToken:(ARtcChannel *_Nonnull)rtcChannel;
 
/** 监测到活跃用户的回调
 
该回调获取当前时间段内累积音量最大者。如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。
 
**Note**
- 你需要开启 enableAudioVolumeIndication 方法才能收到该回调
- uid 返回的是当前时间段内声音最大的用户 uid,而不是瞬时声音最大的用户 uid。
 
 @param rtcChannel      ARtcChannel 类。
 @param speakerUid 当前时间段声音最大的用户的 uid。
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel activeSpeaker:(NSString * _Nonnull)speakerUid;
 
/** 本地或远端视频大小和旋转信息发生改变回调
 
 @param rtcChannel   ARtcChannel 类。
 @param uid     图像尺寸和旋转信息发生变化的用户的用户 ID
 @param size    新的视频尺寸
 @param rotation 旋转信息 (0 到 360)
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel videoSizeChangedOfUid:(NSString *_Nonnull)uid size:(CGSize)size rotation:(NSInteger)rotation;
 
/** 远端视频状态发生改变回调
 
@param rtcChannel  ARtcChannel 类。
@param uid 发生视频状态改变的远端用户 ID。
@param state 远端视频流状态。详见 ARVideoRemoteState。
@param reason 远端视频流状态改变的具体原因。详见 ARVideoRemoteStateReason。
@param elapsed 从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。
*/
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel remoteVideoStateChangedOfUid:(NSString *_Nonnull)uid state:(ARVideoRemoteState)state reason:(ARVideoRemoteStateReason)reason elapsed:(NSInteger)elapsed;
 
/** 远端音频流状态发生改变回调。
 
 远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
 
 @param rtcChannel  ARtcChannel 类。
 @param uid 发生音频状态改变的远端用户 ID。
 @param state  远端音频流状态。详见 ARAudioRemoteState。
 @param reason 远端音频流状态改变的具体原因。详见 ARAudioRemoteStateReason。
 @param elapsed 从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStateChangedOfUid:(NSString *_Nonnull)uid state:(ARAudioRemoteState)state reason:(ARAudioRemoteStateReason)reason elapsed:(NSInteger)elapsed;
 
/** 当前通话统计回调。 该回调在通话或直播中每两秒触发一次。
 
 @param rtcChannel ARtcChannel 类。
 @param stats 通话相关的数据统计信息,详见 ARChannelStats
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel reportRtcStats:(ARChannelStats * _Nonnull)stats;
 
/** 通话中每个用户的网络上下行 last mile 质量报告回调
 
 该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到 ar云平台 边缘服务器的网络状态。
 
 该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。
 
 @param rtcChannel  ARtcChannel 类。
 @param uid       用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。
 @param txQuality
 
 该用户的上行网络质量。基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。
 
 假设上行码率是 500 Kbps,那么支持 480 x 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难。详见 ARNetworkQuality。
 
 @param rxQuality 该用户的下行网络质量。基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 ARNetworkQuality。
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel networkQuality:(NSString * _Nonnull)uid txQuality:(ARNetworkQuality)txQuality rxQuality:(ARNetworkQuality)rxQuality;
 
/** 通话中远端视频流的统计信息回调
 
 该回调描述远端用户在通话中端到端的视频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
 
 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
 
 @param rtcChannel   ARtcChannel 类。
 @param stats  远端视频统计数据,详见 ARtcRemoteVideoStats
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteVideoStats:(ARtcRemoteVideoStats * _Nonnull)stats;
 
/** 通话中远端音频流的统计信息回调,用于取代 audioQualityOfUid
 
 该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
 
 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
 
 和 audioTransportStatsOfUid 回调相比,该回调更贴近用户的主观感受。
 
 比如,当网络发生丢包时,因 FEC(Forward Error Correction,向前纠错码)或重传恢复,最终的音频丢帧率不高,则可以认为整个质量较好。
 
 @param rtcChannel   ARtcChannel 类。
 @param stats  远端音频统计数据,详细定义见 ARtcRemoteAudioStats。
 */
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStats:(ARtcRemoteAudioStats * _Nonnull)stats;
 
@end
 
 
#endif /* ARtcChannelDelegate_h */