Agora Objective-C API Overview
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.
As of v2.3.3, Agora Objective-C API Reference for iOS/macOS can be downloaded from Dash, see FAQ for details.
Channel management
Method | Function |
---|---|
sharedEngineWithAppId | Initializes RtcEngine. |
destroy | Destroys the RtcEngine instance. |
setChannelProfile | Sets the channel profile. |
setClientRole | Sets the role of the user (Live Broadcast only). |
joinChannelByToken | Allows a user to join a channel. |
switchChannelByToken | Switches to a different channel. |
leaveChannel | Allows a user to leave a channel. |
renewToken | Renews the Token. |
Channel 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 in a live broadcast. |
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 recording volume. |
adjustUserPlaybackSignalVolume | Adjusts the playback volume of a specified remote user. |
adjustPlaybackSignalVolume | Adjusts the playback volume of all remote users. |
enableLocalAudio | Enables/Disables the local audio capture. |
muteLocalAudioStream | Sends/Stops sending the local audio. |
muteRemoteAudioStream | Receives/Stops receiving a specified audio stream. |
muteAllRemoteAudioStreams | Receives/Stops receiving all remote audio streams. |
setDefaultMuteAllRemoteAudioStreams | Sets whether to receive all remote audio streams by default. |
Video management
Method | Function |
---|---|
enableVideo | Enables the video module. |
disableVideo | Disables the video module. |
setVideoEncoderConfiguration | Sets the video encoder configuration. |
setupLocalVideo | Initializes the video view of a local user. |
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 | Sends/Stops sending the local video. |
muteRemoteVideoStream | Receives/Stops receiving a specified video stream. |
muteAllRemoteVideoStreams | Receives/Stops receiving all remote video streams. |
setDefaultMuteAllRemoteVideoStreams | Sets whether to receive all remote video streams by default. |
Local media events
Event | Description |
---|---|
localAudioStateChange | Occurs when the local audio state changes. |
localVideoStateChange | Occurs when the state of the local video changes. |
firstLocalAudioFrame | Occurs when the first local audio frame is sent. |
firstLocalVideoFrameWithSize | Occurs when the first local video frame is rendered. |
Remote media events
Event | Description |
---|---|
remoteAudioStateChangedOfUid | Occurs when the remote audio state changes. |
remoteVideoStateChangedOfUid | Occurs when the remote video stream state changes. |
firstRemoteVideoDecodedOfUid | Occurs when the first video frame from a specific remote user is decoded. |
didVideoMuted | Occurs when a remote user’s video stream is muted/unmuted. |
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. (iOS only) |
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.
- This group of methods is for macOS only.
Method | Function |
---|---|
startScreenCaptureByDisplayId | Shares the whole or part of a screen by specifying the display ID. |
startScreenCaptureByWindowId | Shares the whole or part of a window by specifying the window ID. |
setScreenCaptureContentHint | Sets the content hint for screen sharing. |
updateScreenCaptureParameters | Updates the screen sharing parameters. |
updateScreenCaptureRegion | Updates the screen-sharing region. |
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. |
getAudioMixingDuration | Gets the duration (ms) of the music file. |
getAudioMixingCurrentPosition | Gets the playback position (ms) of the music file. |
setAudioMixingPosition | Sets the playback position of the 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. |
Event | Description |
---|---|
rtcEngineDidAudioEffectFinish | Occurs when the local audio effect playback finishes. |
Voice changer and reverberation
Method | Function |
---|---|
setLocalVoicePitch | Changes the voice pitch of the local speaker. |
setLocalVoiceEqualizationOfBandFrequency | Sets the local voice equalization effect. |
setLocalVoiceReverbOfType | Sets the local voice reverberation. |
setLocalVoiceChanger | Sets the local voice changer option. |
setLocalVoiceReverbPreset | Sets the preset local voice reverberation effect. |
Sound position indication
Method | Function |
---|---|
enableSoundPositionIndication | Enables/Disables stereo panning for remote users. |
setRemoteVoicePosition | Sets the sound position and gain of a remote user. |
CDN publisher
This group of methods is applicable to Interactive Broadcast only.
Method | Function |
---|---|
addPublishStreamUrl | Adds a CDN live stream address. |
removePublishStreamUrl | Removes a CDN live stream address. |
setLiveTranscoding | Sets the video layout and audio settings for CDN live. |
Delegate | Description |
---|---|
rtmpStreamingChangedToState | Occurs when the RTMP streaming status changes. |
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. |
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 SDK to regularly report to the application on which users are speaking and the speakers' volume. |
Event | Description |
---|---|
reportAudioVolumeIndicationOfSpeakers | Reports which users are speaking and the speakers' volume at the moment. |
activeSpeaker | Reports which user is the loudest speaker over a period of time. |
Audio routing controller
This group of methods is for iOS only.
Method | Function |
---|---|
setDefaultAudioRouteToSpeakerphone | Sets the default audio route. |
setEnableSpeakerphone | Enables/Disables the audio route to the speakerphone. |
isSpeakerphoneEnabled | Checks whether the speakerphone is enabled. |
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. For details, 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. For details, see Lastmile Tests.
Method | Function |
---|---|
startEchoTestWithInterval | Starts an audio call test. |
stopEchoTest | Stops the audio call 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 data. |
pushExternalAudioFrameSampleBuffer | Pushes the external CMSampleBuffer audio frame. |
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
You can use the C++ APIs to implement this function, see C++ Raw Audio Data.
Method | Function |
---|---|
setRecordingAudioFrameParametersWithSampleRate | Sets the audio recording format. |
setPlaybackAudioFrameParametersWithSampleRate | Sets the audio playback format. |
setMixedAudioFrameParametersWithSampleRate | Sets the mixed audio format. |
Raw video data
You can use the C++ APIs to implement this function, see C++ Raw Video Data.
Media metadata
This group of methods is applicable to Interactive Broadcast only. Do not implement metadataMaxSize, readyToSendMetadataAtTimestamp, and receiveMetadata in AgoraRtcEngineDelegate.
Method | Function |
---|---|
setMediaMetadataDataSource | Sets the data source of the media metadata. |
setMediaMetadataDataDelegate | 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 Interactive Broadcast only.
Method | Function |
---|---|
addVideoWatermark | Adds a watermark image to the local video stream. |
clearVideoWatermarks | Removes the added watermark image from the video stream. |
Encryption
Method | Function |
---|---|
setEncryptionSecret | Enables built-in encryption with an encryption secret. |
setEncryptionMode | Sets the built-in encryption mode. |
Audio recorder
Method | Function |
---|---|
startAudioRecording | Starts an audio recording on the client. |
stopAudioRecording | Stops an audio recording on the client. |
Inject an online media stream
- This group of methods is applicable to Interactive Broadcast only.
- We provide an advanced guide on the applicable scenarios, implementation, and considerations for this group of methods. For details, see Inject Online Media Stream
Method | Function |
---|---|
addInjectStreamUrl | Adds an online media stream to a live broadcast. |
removeInjectStreamUrl | Removes the online media stream from a live broadcast. |
Event | Description |
---|---|
streamInjectedStatusOfUrl | Reports the status of injecting the online media stream. |
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 camera flash function is supported. |
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 | Enables the camera flash function. |
setCameraAutoFocusFaceModeEnabled | Enables the camera auto-face focus function. |
Event | Description |
---|---|
cameraFocusDidChangedToRect | Occurs when a camera focus area changes. (iOS only) |
cameraExposureDidChangedToRect | Occurs when a camera exposure area changes. (iOS only) |
Device manager
This group of methods is for macOS only.
Method | Function |
---|---|
monitorDeviceChange | Monitors the change of a device state. |
enumerateDevices | Retrieves all devices in the system. |
getDeviceInfo | Retrieves the device information. |
setDevice | Sets the playback, recording, or audio-sampling device. |
getDeviceVolume | Retrieves the specified device’s volume. |
setDeviceVolume | Sets the specified device’s volume. |
startRecordingDeviceTest | Starts the microphone test. |
stopRecordingDeviceTest | Stops the microphone test. |
startPlaybackDeviceTest | Starts the audio playback device test. |
stopPlaybackDeviceTest | Stops the audio playback device test. |
startCaptureDeviceTest | Starts the video capture device test. |
stopCaptureDeviceTest | Stops the video capture device test. |
startAudioDeviceLoopbackTest | Starts the audio device loopback test. |
stopAudioDeviceLoopbackTest | Stops the audio device loopback test. |
Delegate | Description |
---|---|
stateChanged | Occurs when the device state changes. (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 recording. (macOS only) |
setAudioSessionOperationRestriction | Sets the audio session’s operational restriction. (iOS only) |
Miscellaneous video control
Method | Function |
---|---|
setCameraCapturerConfiguration | Sets the camera capturer configuration. |
Miscellaneous methods
Method | Function |
---|---|
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 | Retrieves the description of a warning or error code. |
setLogFile | Specifies an SDK output log file. |
setLogFileSize | Sets the log file size. |
setLogFilter | Sets the output log level of the SDK. |
getNativeHandle | Gets the native handle of the SDK engine. |
delegate | Sets and retrieves 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. |
Customized methods (technical preview)
Method | Function |
---|---|
setParameters | Provides technical preview functionalities or special customizations by configuring the SDK with JSON options. |
getParameter | Gets the Agora SDK’s parameters for customization purposes. |