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 | Creates the AgoraRtcEngineKit instance. |
sharedEngineWithConfig | Creates the AgoraRtcEngineKit instance and specifies the area of IP addresses. |
destroy | Destroys the RtcEngine instance. |
setChannelProfile | Sets the channel profile. |
setClientRole | Sets the role of the user (Live interactive streaming 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 the live interactive 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 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 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 | 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. |
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. |
didAudioSubscribeStateChange | Occurs when the remote audio subscribe state changes. |
didVideoSubscribeStateChange | Occurs when the remote video subscribe state changes. |
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. |
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. |
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 the live interactive streaming 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. |
rtmpStreamingEventWithUrl | Reports events during the RTMP 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. |
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. |
Face detection
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 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.
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.
Media metadata
This group of methods is applicable to the live interactive streaming 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 the live interactive streaming 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 |
---|---|
enableEncryption | Enables/Disables the built-in encryption. |
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 the live interactive streaming only.
We provide an advanced guide on the applicable scenarios, implementation, and considerations for this group of methods, see Inject Online Media Stream.
Method | Function |
---|---|
addInjectStreamUrl | Adds an online media stream to the live interactive streaming. |
removeInjectStreamUrl | Removes the online media stream from the live interactive streaming. |
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 |
---|---|
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 | 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. |