join method
接听或加入;成功后连接媒体,打开麦克风(视频通话另打开摄像头)。得不到设备时以 permission_required、device_error 拒绝, 这时已经接听,App 引导授权后再调用 setMicrophoneEnabled、setCameraEnabled。
Implementation
@override
Future<void> join() async {
_core.requireSignedIn();
final current = _module.current;
if (current != null && current.callId != callId) {
throw DRException(code: 'call_in_progress', details: {'reason': 'in_other_call', 'call_id': current.callId}, source: ErrorSource.local, message: 'call_in_progress');
}
final result = await _module.signalWithRetry('rtc.join', '$_path/join', {'call_id': callId, 'media_providers': _module.providerKinds});
final call = asMap(result['call']);
if (call != null) applyCall(call, self: asMap(call['self']) ?? {'state': 'joined', 'joined_on_this_device': true});
final media = asMap(result['media']);
if (media != null) await attachMedia(media, asInt(result['heartbeat_interval_seconds']));
}