Skip to main content

Standard Conference Workflow

Before you begin, please confirm you've completed RTC Service activation, Import SDK, and Initialization.

Set Up Local Event Callbacks​

Set room join event callback:

engine.onRoomJoined = (int code, String? errMsg) {
if (code != 0) {
// Failed to join room
} else {
// Successfully joined room
}
};

Set resource publish event callback:

engine.onPublished = (RCRTCMediaType type, int code, String? errMsg) {
// type: Published resource type
if (code != 0) {
// Publish failed
} else {
// Publish succeeded
}
}

Set resource unpublish event callback:

engine.onUnpublished = (RCRTCMediaType type, int code, String? errMsg) {
// type: Unpublished resource type
if (code != 0) {
// Unpublish failed
} else {
// Unpublish succeeded
}
}

Set resource subscription event callback:

engine.onSubscribed = (String userId, RCRTCMediaType type, int code, String? errMsg) {
// userId: Remote user ID
// type: Subscribed resource type
if (code != 0) {
// Subscription failed
} else {
// Subscription succeeded
}
}

Set resource unsubscription event callback:

engine.onUnsubscribed = (String userId, RCRTCMediaType type, int code, String? errMsg) {
// userId: Remote user ID
// type: Unsubscribed resource type
if (code != 0) {
// Unsubscription failed
} else {
// Unsubscription succeeded
}
}

Set Up Remote Event Callbacks​

Set remote user join event callback:

engine.onUserJoined = (String roomId, String userId) {
// roomId: Room ID
// userId: Remote user ID
}

Set remote user leave event callback:

engine.onUserLeft = (String roomId, String userId) {
// roomId: Room ID
// userId: Remote user ID
}

Set remote user publish event callback:

engine.onRemotePublished = (String roomId, String userId, RCRTCMediaType type) {
// roomId: Room ID
// userId: Remote user ID
// type: Published resource type
}

Set remote user unpublish event callback:

engine.onRemoteUnpublished = (String roomId, String userId, RCRTCMediaType type) {
// roomId: Room ID
// userId: Remote user ID
// type: Unpublished resource type
}

Join a Room​

Join an RTC conference as a meeting member (meeting_member):

RCRTCRoomSetup setup = RCRTCRoomSetup.create(
type: RCRTCMediaType.audio_video,
role: RCRTCRole.meeting_member,
);
engine.joinRoom('RoomID', setup);

Local Preview​

Enable video capture:

engine.enableCamera(true);

Set preview window:

RCRTCView view = await RCRTCView.create();
engine.setLocalView(view);

Publish Resources​

Publish audio-video resources:

engine.publish(RCRTCMediaType.audio_video);

Subscribe to Remote User Resources​

After remote user publishes resources, subscribe to their audio-video streams:

engine.subscribe(userId, RCRTCMediaType.audio_video);

Set remote preview window after resource publication:

RCRTCView view = await RCRTCView.create();
engine.setRemoteView(userId, view);