Agora Objective-C API Overview Document

Agora provides ensured quality of experience (QoE) for worldwide Internet-based voice and video communications through a virtual global network optimized for real-time web and mobile-to-mobile applications.

  • The AgoraRtcEngineKit class is the entry point of the Agora SDK providing API methods for apps to easily start voice and video communication.
  • The Agora SDK uses delegate callbacks in the AgoraRtcEngineDelegate protocol to report runtime events to the app.
  • The AgoraRtcChannel class provides methods that enable real-time communications in a specified channel. By creating multiple RtcChannel instances, users can join multiple channels.
  • The AgoraRtcChannelDelegate class provides callbacks that report events and statistics of a specified channel.

During API calls, the SDK may returns error codes and warning codes. See Error Codes and Warning Codes.

Core methods

Method Function
sharedEngineWithAppId Creates the AgoraRtcEngineKit instance.
sharedEngineWithConfig Creates the AgoraRtcEngineKit instance and specifies the region for connection.
destroy Destroys the AgoraRtcEngineKit instance.
setChannelProfile Sets the channel profile.
setClientRole1 Sets the role of the user (interactive live streaming only).
setClientRole2 Sets the role and level of the user (interactive live streaming only).
joinChannelByToken1 Allows a user to join a channel.
joinChannelByToken2 Allows a user to join a channel and set the publishing or subscribing state.
switchChannelByToken1 Switches to a different channel in the interactive live streaming.
switchChannelByToken2 Switches to a different channel and set the subscribing state in the interactive live streaming.
leaveChannel Allows a user to leave a channel.
renewToken Renews the Token.

Core events

Event Description
didJoinChannel Occurs when a user joins a channel.
didRejoinChannel Occurs when a user rejoins a channel.
didLeaveChannelWithStats Occurs when a user leaves a channel.
didClientRoleChanged Occurs when the user role switches successfully in the interactive live streaming.
didClientRoleChangeFailed Occurs when the user role switch fails in the interactive live streaming.
didJoinedOfUid Occurs when a remote user joins a channel.
didOfflineOfUid Occurs when a remote user leaves a channel.
connectionChangedToState Occurs when the connection state of the app changes.
networkTypeChangedToType Occurs when the network type changes.
rtcEngineConnectionDidLost Occurs when the connection between the SDK is interrupted, and the SDK cannot reconnect to the edge server in 10 seconds.
rtcEngineConnectionDidBanned Occurs when your connection is banned by the Agora Server.
tokenPrivilegeWillExpire Occurs when the token expires in 30 seconds.
rtcEngineRequestToken Occurs when the token expires.

Audio management

Method Function
enableAudio Enables the audio module.
disableAudio Disables the audio module.
setAudioProfile Sets the audio parameters and application scenarios.
adjustRecordingSignalVolume Adjusts the volume of the signal captured by the microphone.
adjustLoopbackRecordingSignalVolume Adjusts the volume of the signal captured by the sound card. (macOS only)
adjustUserPlaybackSignalVolume Adjusts the playback signal volume of a specified remote user.
adjustPlaybackSignalVolume Adjusts the playback signal volume of all remote users.
enableLocalAudio Enables/Disables the local audio capture.
muteLocalAudioStream Stops/Resumes publishing the local audio stream.
muteRemoteAudioStream Stops/Resumes subscribing to the audio stream of a specified user.
muteAllRemoteAudioStreams Stops/Resumes subscribing to the audio streams of all remote users.

Video management

Method Function
enableVideo Enables the video module.
disableVideo Disables the video module.
setVideoEncoderConfiguration Sets the video encoder configuration.
setupLocalVideo Initializes the local video view.
setupRemoteVideo Initializes the video view of a remote user.
setLocalRenderMode Updates the display mode of the local video view.
setRemoteRenderMode Updates the display mode of the video view of a remote user.
startPreview Starts the local video preview.
stopPreview Stops the local video preview.
enableLocalVideo Enables/Disables the local video capture.
muteLocalVideoStream Stops/Resumes publishing the local video stream.
muteRemoteVideoStream Stops/Resumes subscribing to the video stream of a specified user.
muteAllRemoteVideoStreams Stops/Resumes subscribing to the video streams of all remote users.

Local media events

Event Description
localAudioStateChange Occurs when the local audio state changes.
localVideoStateChange Occurs when the state of the local video changes.
firstLocalAudioFramePublished Occurs when the first audio frame is published.
firstLocalVideoFramePublished Occurs when the first video frame is published.
firstLocalVideoFrameWithSize Occurs when the first local video frame is rendered.
didAudioPublishStateChange Occurs when the local audio publish state changes.
didVideoPublishStateChange Occurs when the local video publish state changes.

Remote media events

Event Description
remoteAudioStateChangedOfUid Occurs when the remote audio state changes.
remoteVideoStateChangedOfUid Occurs when the remote video stream state changes.
firstRemoteVideoFrameOfUid Occurs when the first remote video frame is rendered.
firstRemoteVideoDecodedOfUid Occurs when the first remote video frame is received and decoded.
didAudioSubscribeStateChange Occurs when the remote audio subscribe state changes.
didVideoSubscribeStateChange Occurs when the remote video subscribe state changes.
didAudioMuted Occurs when a remote user’s audio stream is muted.
didVideoMuted Occurs when a remote user stops or resumes publishing the video stream.
didVideoEnabled Occurs when a specific remote user enables/disables the video module.
didLocalVideoEnabled Occurs when a specific remote user enables/disables the local video capturing function.

Statistics events

After joining a channel, SDK triggers this group of callbacks once every two seconds. We provide an advanced guide for these callbacks. For details, see In-call Stats.

Event Description
remoteAudioStats Reports the statistics of the audio stream from each remote user/host.
reportRtcStats Reports the statistics of the Rtc Engine.
networkQuality Reports the network quality of each user.
localAudioStats Reports the statistics of the local audio stream.
localVideoStats Reports the statistics of the uploading local video streams.
remoteVideoStats Reports the statistics of the video stream from each remote user/host.

Video pre-process and post-process

Method Function
setBeautyEffectOptions Enables/Disables image enhancement and sets the options.
enableVirtualBackground Enables/Disables the virtual background.
enableRemoteSuperResolution Enables/Disables the super resolution feature for a remote user’s video. (beta feature)
setVideoDenoiserOptions Sets video noise reduction.
setLowlightEnhanceOptions Sets low-light enhancement.
setColorEnhanceOptions Sets color enhancement.
Event Description
virtualBackgroundSourceEnabled Reports whether the virtual background is successfully enabled.
superResolutionEnabledOfUid Reports whether the super resolution feature is successfully enabled. (beta feature)

Multi-channel management

We provide an advanced guide on the applicable scenarios, implementation and considerations for this group of methods. For details, see Join multiple channels.

API Function
createRtcChannel Initializes and gets an AgoraRtcChannel instance. To join multiple channels, create multiple AgoraRtcChannel objects.
AgoraRtcChannel Provides methods that enable real-time communications in a specified channel.
AgoraRtcChannelDelegate Provides callbacks that report events and statistics in a specified channel.

Screen sharing

We provide an advanced guide on the applicable scenarios, implementation, and considerations for this group of methods, see Share the Screen.

Method Function
getScreenCaptureSourcesWithThumbSize Gets a list of shareable screens and windows. (macOS only)
startScreenCaptureByDisplayId Shares the whole or part of a screen by specifying the display ID. (macOS only)
startScreenCaptureByWindowId Shares the whole or part of a window by specifying the window ID. (macOS only)
startScreenCapture Starts screen sharing. (iOS only)
setScreenCaptureContentHint Sets the content hint for screen sharing. (macOS only)
updateScreenCaptureParameters Updates the screen sharing parameters. (macOS only)
updateScreenCapture Updates the screen sharing configuration. (iOS only)
updateScreenCaptureRegion Updates the screen-sharing region. (macOS only)
stopScreenCapture Stops screen sharing.

Music file playback and mixing

Method Function
startAudioMixing Starts playing and mixing the music file.
stopAudioMixing Stops playing and mixing the music file.
pauseAudioMixing Pauses playing and mixing the music file.
resumeAudioMixing Resumes playing and mixing the music file.
adjustAudioMixingVolume Adjusts the volume of audio mixing.
adjustAudioMixingPlayoutVolume Adjusts the volume of audio mixing for local playback.
adjustAudioMixingPublishVolume Adjusts the volume of audio mixing for remote playback.
setAudioMixingPitch Sets the pitch of the local music file.
getAudioMixingPlayoutVolume Gets the audio mixing volume for local playback.
getAudioMixingPublishVolume Gets the audio mixing volume for publishing.
getAudioMixingCurrentPosition Gets the playback position (ms) of the music file.
setAudioMixingPosition Sets the playback position of the music file.
getAudioTrackCount Gets the number of audio tracks of the current music file. (iOS only)
selectAudioTrack Specifies the playback track of the current music file. (iOS only)
setAudioMixingPlaybackSpeed Sets the playback speed of the current music file.
setAudioMixingDualMonoMode Sets the channel mode of the current music file.
Event Description
localAudioMixingStateDidChanged Occurs when the state of the local user’s audio mixing file changes.
rtcEngineRemoteAudioMixingDidStart Occurs when a remote user starts audio mixing.
rtcEngineRemoteAudioMixingDidFinish Occurs when a remote user finishes audio mixing.

Audio effect file playback

Method Function
getEffectsVolume Gets the volume of the audio effects.
setEffectsVolume Sets the volume of the audio effects.
setVolumeOfEffect Sets the volume of a specified audio effect.
playEffect Plays a specified audio effect.
stopEffect Stops playing a specified audio effect.
stopAllEffects Stops playing all audio effects.
preloadEffect Preloads a specified audio effect file into the memory.
unloadEffect Releases a specified preloaded audio effect from the memory.
pauseEffect Pauses a specified audio effect.
pauseAllEffects Pauses all audio effects.
resumeEffect Resumes playing a specified audio effect.
resumeAllEffects Resumes playing all audio effects.
getEffectCurrentPosition Gets the playback position of the audio effect file.
setEffectPosition Sets the playback position of an audio effect file.
Event Description
rtcEngineDidAudioEffectFinish Occurs when the local audio effect playback finishes.

Audio file information

Method Function
getAudioFileInfo Gets the information of a specified audio file.
getEffectDuration Gets the information of a specified audio file.
Event Description
didRequestAudioFileInfo Reports the information of an audio file.

Virtual metronome

This group of methods is for iOS only.

Method Function
startRhythmPlayer Enables the virtual metronome.
configRhythmPlayer Configures the virtual metronome.
stopRhythmPlayer Disables the virtual metronome.

Voice effect

Method Function
setLocalVoicePitch Changes the voice pitch of the local speaker.
enableLocalVoicePitchCallback Enables reporting the voice pitch of the local user.
setLocalVoiceEqualizationOfBandFrequency Sets the local voice equalization effect.
setLocalVoiceReverbOfType Sets the local voice reverberation.
setVoiceBeautifierPreset Sets an SDK preset voice beautifier effect.
setVoiceBeautifierParameters Sets parameters for SDK preset voice beautifier effects.
setAudioEffectPreset Sets an SDK preset audio effect.
setAudioEffectParameters Sets parameters for SDK preset audio effects.
setVoiceConversionPreset Sets an SDK preset voice conversion effect.
Event Description
reportLocalVoicePitchFrequency Reports the voice pitch of the local user.

Sound localization

Method Function
enableSoundPositionIndication Enables/Disables stereo panning for remote users.
setRemoteVoicePosition Sets the sound position and gain of a remote user.

Media push

This group of methods is applicable to the interactive live streaming only.

Method Function
startRtmpStreamWithoutTranscoding Starts pushing media streams to a CDN without transcoding.
startRtmpStreamWithTranscoding Starts pushing media streams to a CDN and sets the transcoding configuration.
updateRtmpTranscoding Updates the transcoding configuration.
stopRtmpStream Stops pushing media streams to a CDN.
Delegate Description
rtmpStreamingChangedToState Occurs when the RTMP or RTMPS streaming status changes.
rtmpStreamingEventWithUrl Reports events during the RTMP or RTMPS streaming.
rtcEngineTranscodingUpdated Occurs when the publisher’s transcoding settings are updated.

Media stream relay across channels

Method Function
startChannelMediaRelay Starts to relay media streams across channels.
updateChannelMediaRelay Updates the channels for media stream relay.
stopChannelMediaRelay Stops the media stream relay.
pauseAllChannelMediaRelay Pauses the media stream relay to all destination channels.
resumeAllChannelMediaRelay Resumes the media stream relay to all destination channels.
Event Description
channelMediaRelayStateDidChange Occurs when the state of the media stream relay changes.
didReceiveChannelMediaRelayEvent Reports events during the media stream relay.

Audio volume indication

Method Function
enableAudioVolumeIndication Enables the reporting of users' volume indication.
Event Description
reportAudioVolumeIndicationOfSpeakers Reports the volume information of users.
activeSpeaker Occurs when the most active remote speaker is detected.

Face detection

This group of methods is for iOS only.

Method Function
enableFaceDetection Enables/Disables face detection for the local user.
Event Description
facePositionDidChangeWidth Reports the face detection result of the local user.

Audio routing controller

Method Function
setDefaultAudioRouteToSpeakerphone Sets the default audio route (for iOS only).
setEnableSpeakerphone Enables/Disables the audio route to the speakerphone (for iOS only).
isSpeakerphoneEnabled Checks whether the speakerphone is enabled (for iOS only).
Event Description
didAudioRouteChanged Occurs when the local audio route changes.

In-ear monitor

This group of methods is for iOS only.

Method Function
enableInEarMonitoring Enables in-ear monitoring.
setInEarMonitoringVolume Sets the volume of the in-ear monitor.

Dual video stream mode

Method Function
enableDualStreamMode Enables/Disables the dual-stream mode.
setRemoteVideoStream Sets the video stream type of the remote stream.
setRemoteDefaultVideoStreamType Sets the default video stream type of the remote stream.

Stream fallback

We provide an advanced guide on the applicable scenarios, implementation, and considerations for this group of methods, see Video Stream Fallback.

Method Function
setRemoteUserPriority Sets the priority of a remote user’s stream.
setLocalPublishFallbackOption Sets the fallback option for the published stream under unreliable network conditions.
setRemoteSubscribeFallbackOption Sets the fallback option for the remote stream under unreliable network conditions.
Event Description
didLocalPublishFallbackToAudioOnly Occurs when the published video stream falls back to an audio-only stream, or when it switches back to the video stream.
didRemoteSubscribeFallbackToAudioOnly Occurs when the remote video stream falls back to an audio-only stream, or when it switches back to the video stream.

Pre-call network test

We provide an advanced guide on the applicable scenarios, implementation, and considerations for this group of methods, see Pre-call Test.

Method Function
startEchoTestWithInterval Starts an audio call loop test.
startEchoTestWithConfig Starts an audio and video call loop test.
stopEchoTest Stops the call loop test.
enableLastmileTest Enables the network connection quality test.
disableLastmileTest Disables the network connection quality test.
startLastmileProbeTest Starts the last-mile network probe test.
stopLastmileProbeTest Stops the last-mile network probe test.
Event Description
lastmileQuality Reports the last mile network quality of the local user before the user joins a channel.
lastmileProbeTestResult Reports the last-mile network probe result.

Custom video module

Method Function
setVideoSource Sets the video source.
setLocalVideoRenderer Sets the local video renderer.
setRemoteVideoRenderer Sets the remote video renderer.
videoSource Gets the video source.
localVideoRenderer Gets the local video renderer.
remoteVideoRendererOfUserId Gets the remote video renderer.

External audio data (push-mode only)

Method Function
enableExternalAudioSourceWithSampleRate Enables the external audio source.
disableExternalAudioSource Disables the external audio source.
pushExternalAudioFrameRawData Pushes the external raw audio frame to a specified position.
pushExternalAudioFrameSampleBuffer Pushes the external CMSampleBuffer audio frame to a specified position.
setExternalAudioSourceVolume Sets the volume of the external audio frame in the specified position.

External audio sink

Method Function
enableExternalAudioSink Enables the external audio sink.
disableExternalAudioSink Disables the external audio sink.
pullPlaybackAudioFrameRawData Pulls the remote audio data in the RawData format.
pullPlaybackAudioFrameSampleBufferByLengthInByte Pulls the remote audio data in the SampleBuffer format.

External video data (push-mode only)

Method Function
setExternalVideoSource Configures the external video source.
pushExternalVideoFrame Pushes the external video frame.

Raw audio data

Method Function
setAudioDataFrame Registers the raw audio frame protocol.
setRecordingAudioFrameParametersWithSampleRate Sets the audio sampling format.
setPlaybackAudioFrameParametersWithSampleRate Sets the audio playback format.
setMixedAudioFrameParametersWithSampleRate Sets the format of the mixed sampled and playback audio frame.
Event Description
getObservedAudioFramePosition Sets the audio observation positions.
getMixedAudioParams Sets the audio mixing format for the onMixedAudioFrame callback.
getRecordAudioParams Sets the audio recording format for the onRecordAudioFrame callback.
getPlaybackAudioParams Sets the audio playback format for the onPlaybackAudioFrame callback.
onRecordAudioFrame Occurs when the recorded audio frame of the local user is received.
onPlaybackAudioFrame Occurs when the playback audio frame of all remote users is received.
onMixedAudioFrame Occurs when the mixed audio frame of the local user and all remote users is received.
onPlaybackAudioFrameBeforeMixing Occurs when the audio frame of a remote user is received before mixing.

Raw video data

This group of methods is for iOS only. To implement raw video data on macOS, use C++ APIs.

Method Function
setVideoDataFrame Registers a raw video frame protocol.
Event Description
getVideoFormatPreference Sets the format of the raw video data output by the SDK.
getRotationApplied Sets whether to rotate the raw video data output by the SDK.
getMirrorApplied Sets whether to mirror the raw video data output by the SDK.
getObservedFramePosition Sets the video observation positions.
onCaptureVideoFrame Gets the video data captured by the local camera.
onPreEncodeVideoFrame Gets the local pre-encoded video data.
onRenderVideoFrame Gets the incoming remote video data.

Local encoded video data

This group of methods is for iOS only.

Method Function
setVideoEncodedFrame Registers a local encoded video frame protocol.
Event Description
onVideoEncodedFrame Gets the local encoded video frame.

Media metadata

Do not implement metadataMaxSize, readyToSendMetadataAtTimestamp, and receiveMetadata in AgoraRtcEngineDelegate.

Method Function
setMediaMetadataDataSource Sets the data source of the media metadata.
setMediaMetadataDelegate Sets the delegate for the media metadata.
Event Description
metadataMaxSize Occurs when the SDK requests the maximum size of the metadata.
readyToSendMetadataAtTimestamp Occurs when the sender is ready to send the metadata.
receiveMetadata Occurs when the receiver receives the metadata.

Watermark

This group of methods is applicable to the interactive live streaming only.

Method Function
addVideoWatermark Adds a watermark image to the local video stream.
clearVideoWatermarks Removes the added watermark image from the video stream.

Video snapshot

Method Function
takeSnapshot Takes a snapshot of a video stream.
Event Description
snapshotTaken Reports the result of taking a video snapshot.

Encryption

Method Function
enableEncryption Enables/Disables the built-in encryption.

Audio recorder

Method Function
startAudioRecordingWithConfig Starts an audio recording on the client.
stopAudioRecording Stops an audio recording on the client.

Media recorder

Method Function
sharedMediaRecorderWithRtcEngine Creates an AgoraMediaRecorder instance.
destroy Destroys the AgoraMediaRecorder instance.
enableMainQueueDispatch Enables/Disables dispatching delegate methods to the main queue.
startRecording Starts recording the local audio and video.
stopRecording Stops recording the local audio and video.
Event Description
stateDidChanged Occurs when the recording state changes.
informationDidUpdated Occurs when the recording information is updated.

Camera control

This group of methods is for iOS only.

Method Function
switchCamera Switches between front and rear cameras.
isCameraZoomSupported Checks whether the camera zoom function is supported.
isCameraTorchSupported Checks whether the device supports enabling the flash.
isCameraFocusPositionInPreviewSupported Checks whether the camera manual focus function is supported.
isCameraExposurePositionSupported Checks whether the camera manual exposure function is supported.
isCameraAutoFocusFaceModeSupported Checks whether the camera auto-face focus function is supported.
setCameraZoomFactor Sets the camera zoom ratio.
setCameraFocusPositionInPreview Sets the manual focus position.
setCameraExposurePosition Sets the manual exposure position.
setCameraTorchOn Sets whether to enable the flash.
setCameraAutoFocusFaceModeEnabled Sets whether to enable face autofocus.
Event Description
cameraFocusDidChangedToRect Occurs when a camera focus area changes. (iOS only)
cameraExposureDidChangedToRect Occurs when a camera exposure area changes. (iOS only)

Device manager

Method Function
monitorDeviceChange Monitors the change of a device state (macOS only).
enumerateDevices Gets all devices in the system (macOS only).
getDeviceInfo Gets the information of devices, such as audio sampling and playback device (macOS only).
setDevice Sets the devices, such as audio sampling and playback device (macOS only).
getDeviceVolume Gets the specified device’s volume (macOS only).
setDeviceVolume Sets the specified device’s volume (macOS only).
startRecordingDeviceTest Starts the audio sampling device test (macOS only).
stopRecordingDeviceTest Stops the audio sampling device test (macOS only).
startPlaybackDeviceTest Starts the audio playback device test (macOS only).
stopPlaybackDeviceTest Stops the audio playback device test (macOS only).
startCaptureDeviceTest Starts the video capture device test (macOS only).
stopCaptureDeviceTest Stops the video capture device test (macOS only).
startAudioDeviceLoopbackTest Starts the audio device loopback test (macOS only).
stopAudioDeviceLoopbackTest Stops the audio device loopback test (macOS only).
getDefaultAudioDevice Gets the default audio device of the system (macOS only).
followSystemPlaybackDevice Sets the audio playback device used by the SDK to follow the system default audio playback device (macOS only).
followSystemRecordingDevice Sets the audio recording device used by the SDK to follow the system default audio recording device (macOS only).
Delegate Description
stateChanged Occurs when the device state changes (macOS only).
reportAudioDeviceTestVolume Reports the result of an audio device test (macOS only).

Data stream

Method Function
createDataStream Creates a data stream.
sendStreamMessage Sends data stream messages.
Event Description
receiveStreamMessageFromUid Occurs when the local user receives the data stream from a remote user within five seconds.
didOccurStreamMessageErrorFromUid Occurs when the local user fails to receive the data stream from the remote user within five seconds.

Miscellaneous audio control

Method Function
enableLoopbackRecording Enables loopback sampling. (macOS only)
setAudioSessionOperationRestriction Sets the operational permission of the SDK on the audio session. (iOS only)

Miscellaneous video control

Method Function
setCameraCapturerConfiguration Sets the camera capture preference.

Miscellaneous methods

Method Function
setCloudProxy Sets the Agora cloud proxy service.
enableDeepLearningDenoise Enables/Disables noise suppression.
sendCustomReportMessage Reports customized messages.
getCallId Gets the current call ID.
rate Allows a user to rate a call after the call ends.
complain Allows a user to complain about the call quality after a call ends.
enableMainQueueDispatch Enables/Disables dispatching the delegate to the main queue.
getSdkVersion Gets the Agora SDK version.
getErrorDescription Gets the description of a warning or error code.
getNativeHandle Gets the native handle of the SDK engine.
delegate Sets and gets the SDK delegate.

Miscellaneous events

Event Description
didOccurWarning Occurs when a warning occurs.
didOccurError Occurs when an error occurs.
didApiCallExecute Occurs when an API method is executed.
didProxyConnected Reports the proxy connection state.