Join multiple channels
Agora Video SDK enables you to simultaneously join multiple channels. This capability allows you to receive and publish audio and video streams across multiple channels concurrently.
Understand the tech
Video SDK's multi-channel functionality is based on two key components:
-
AgoraRtcConnection
The
AgoraRtcConnection
object identifies a connection. It contains the following information:- Channel name
- User ID of the local user
You create multiple
AgoraRtcConnection
objects, each with a different channel name and user ID. EachAgoraRtcConnection
instance can independently publish multiple audio streams and a single video stream. -
AgoraRtcEngineKit(Ex)
The class contains methods tailored for interacting with a designated
AgoraRtcConnection
object.To join multiple channels, you call
joinChannelExByToken
method in theAgoraRtcEngineKit(Ex)
class multiple times, using a differentAgoraRtcConnection
instance each time.
When joining multiple channels:
- Ensure that the user ID for each
AgoraRtcConnection
object is unique and nonzero. - Configure publishing and subscribing options for the
AgoraRtcConnection
object injoinChannelExByToken
. - Pass the
AgoraRtcEngineDelegate
object to thedelegate
parameter when calling thejoinChannelExByToken
method to receive multiple channel-related event notifications.
Prerequisites
Ensure that you have implemented the SDK quickstart in your project.
Implementation
To implement multi-channel functionality, set up each channel as follows:
-
Define an
AgoraRtcConnection
object in your project'sViewController.swift
file. -
Join the channel using a random user ID.
-
Set up the remote video in the
didJoinedOfUid
callback.
Reference
This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.
Sample project
Agora offers the JoinMultiChannels open-source sample project for your reference. Download the project or view the source code for a more detailed example.