CallsService class
音视频(《sdk-web/3.接口设计》第 14 节,《sdk-web/2.功能概述文档》第 15 节,《2.功能概述文档》第 8 节)。 信令经长连接发出,不可用时用客户端 API;媒体连接、心跳在这个进程中。Flutter 没有多个标签页: Web SDK 中“没有标签页持有媒体连接而本设备仍在通话中”在 Flutter 中是 App 被杀后重新打开,SDK 代发心跳、把通话标为可以恢复, 由 deeprespond_im_call 调用 resume() 重新连接媒体。
- Inheritance
-
- Object
- ClientModule
- CallsService
Constructors
- CallsService(Core core, JsonMap? _config())
Properties
-
activeResults
→ Stream<
ActiveCalls> -
每次查询 calls/active 的结果(登录、重新连接、sync.required 后的同步,回到前台,以及直接调用 fetchActive):
来电包据此结束 current 和 incoming 中都没有的通话的来电通知和 CallKit 来电(《2.功能概述文档》第 8.6 节)。
no setter
- core → Core
-
final
- current → CallHandleImpl?
-
本人正在进行的通话。
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
-
incoming
→ List<
CallHandleImpl> -
正在振铃的来电。
no setter
- lightSync → bool
-
是否参与轻量同步;完整的重连同步总是参与。
no setter
- log → ModuleLogger
-
final
- me → String?
-
no setter
- meOverride ↔ String? Function()?
-
测试用:替换本人的用户名。
getter/setter pair
-
providerKinds
→ List<
String> -
发起和接听时报告给服务端的 media_providers。
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- savedCurrentCallId → String?
-
meta 的 calls.current 中保存的正在进行的通话 ID(App 被杀后重新打开时,登录恢复后即可读取)。
no setter
- syncName → SyncModule
-
no setter
Methods
-
answer(
String callId) → Future< CallHandleImpl> - 接听(长连接可用时 rtc.join,否则 POST /client/v1/calls/{call_id}/join),成功后连接媒体。
-
apply(
EventFrame frame) → Future< void> -
config(
) → JsonMap? -
fetchActive(
{DRCancelToken? cancel}) → Future< ActiveCalls> - GET /client/v1/calls/active:本人正在进行的通话和正在振铃的来电。查询后与本地对齐(同同步), 本设备在通话中而还没有媒体连接的开始代发心跳、标为可以恢复。同步和回到前台时 SDK 自动调用;结果另经 activeResults 发出。
-
fetchCall(
String callId) → Future< CallHandleImpl> - 通话详情(rtc.get,长连接不可用时 GET /client/v1/calls/{call_id}),更新或建立本地的句柄。
-
forget(
CallHandleImpl handle) → void - 句柄结束后从表中去掉(快照不再变化)。
-
get(
String callId) → Future< CallHandleImpl> - 本地有的直接返回;没有的取详情(rtc.get)。
-
groupCall(
String groupId) → Future< CallHandleImpl?> -
groupCallBanner(
String groupId) → JsonMap? - 本地缓存的群通话横幅;null 为本地没有状态(没有进行中的群通话,或还不知道)。
-
heartbeat(
String callId, JsonMap data) → Future< void> - 心跳:经长连接 2 秒内没有回应或长连接不可用时用客户端 API。
-
history(
{String? cursor, int? limit}) → Future< DRPage< CallSummary> > -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
noteCurrent(
String callId, bool inCall, {bool force = false}) → void -
句柄报告本设备是否在这个通话中:在 meta 的 calls.current 中保存或清除(
force时不比较内存中的值)。 -
onLeader(
) → void -
本地数据加载完、开始连接之前(Web SDK 的“成为主标签页”)。
inherited
-
onReload(
) → Future< void> -
从本地存储重新加载内存中的数据。
inherited
-
onSignedIn(
bool fresh) → Future< void> -
登录或恢复登录、数据库已打开:从本地存储加载需要的数据。
override
-
onSignedOut(
) → void -
退出、会话结束、切换用户:清除内存中的数据、释放列表。
override
-
provider(
String kind) → MediaProviderAdapter? -
registerProvider(
MediaProviderAdapter adapter) → void - 登记媒体适配(deeprespond_im_call 登记 LiveKit;同一种类后登记的替换先登记的,测试用)。
-
reject(
String callId, {RejectReason reason = RejectReason.declined}) → Future< CallHandleImpl> -
拒绝(长连接可用时 rtc.reject,否则 POST /client/v1/calls/{call_id}/reject);忙线时
reason为 busy。 -
reportHolder(
String callId, bool holding) → void - 这个进程开始或停止持有一个通话的媒体连接:开始持有的停止代发心跳;断开而本人仍在通话中的开始代发。
-
resetSync(
) → void - 清除内存中的状态(退出、切换用户)。
-
signal(
String op, String path, JsonMap data, {String method = 'POST'}) → Future< JsonMap> - 经长连接发出,不可用时用客户端 API(《sdk-web/2.功能概述文档》第 15 节)。 服务端不把本设备自己的接听、挂断等变化推给本设备:响应中的通话快照按通知同样处理(发出 call.changed)。
-
signalWithRetry(
String op, String path, JsonMap data) → Future< JsonMap> - 接听、拒绝、挂断、结束:rate_limited 的等待不超过 5 秒时自动重试一次。
-
start(
{String? toUser, String? toGroup, List< String> ? usernames, required CallMedia media, Map<String, String> ? ext}) → Future<CallHandleImpl> -
sync(
SyncRunContext ctx) → Future< void> -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited