Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions calls/ios/audio-modes.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,7 @@ CometChatCalls.joinSession(
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
build];

[CometChatCalls joinSessionWithSessionID:sessionId
Expand DownExpand Up@@ -113,8 +113,8 @@ class CallViewController: UIViewController, MediaEventsListener {
CallSession.shared.removeMediaEventsListener(self)
}

func onAudioModeChanged(audioModeType: AudioModeType) {
switch audioModeType {
func onAudioModeChanged(audioMode: AudioMode) {
switch audioMode {
case .speaker:
print("Switched to speaker")
case .earpiece:
Expand All@@ -127,7 +127,7 @@ class CallViewController: UIViewController, MediaEventsListener {
break
}
// Update audio mode button icon
updateAudioModeIcon(audioModeType)
updateAudioModeIcon(audioMode)
}

// Other callbacks...
Expand DownExpand Up@@ -159,9 +159,9 @@ class CallViewController: UIViewController, MediaEventsListener {
[[CallSession shared] removeMediaEventsListener:self];
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Update audio mode button icon
[self updateAudioModeIcon:audioModeType];
[self updateAudioModeIcon:audioMode];
}

// Other callbacks...
Expand All@@ -187,7 +187,7 @@ let sessionSettings = CometChatCalls.sessionSettingsBuilder
<Tab title="Objective-C">
```objectivec
SessionSettings *sessionSettings = [[[[CometChatCalls sessionSettingsBuilder]
setAudioMode:AudioModeTypeSpeaker]
setAudioMode:AudioModeSpeaker]
hideAudioModeButton:YES]
build];
```
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/custom-control-panel.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -361,7 +361,7 @@ extension CallViewController: MediaEventsListener {
func onRecordingStopped() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
8 changes: 4 additions & 4 deletions calls/ios/events.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,7 +279,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onScreenShareStarted() {}
func onScreenShareStopped() {}

func onAudioModeChanged(audioModeType: AudioModeType) {
func onAudioModeChanged(audioMode: AudioMode) {
// Audio output device changed
}

Expand DownExpand Up@@ -329,7 +329,7 @@ class CallViewController: UIViewController, MediaEventsListener {
// Call recording stopped
}

- (void)onAudioModeChangedWithAudioModeType:(AudioModeType)audioModeType {
- (void)onAudioModeChangedWithAudioMode:(AudioMode)audioMode {
// Audio output device changed
}

Expand All@@ -354,11 +354,11 @@ class CallViewController: UIViewController, MediaEventsListener {
| `onRecordingStopped` | - | Call recording stopped |
| `onScreenShareStarted` | - | You started screen sharing |
| `onScreenShareStopped` | - | You stopped screen sharing |
| `onAudioModeChanged` | `AudioModeType` | Audio output device changed |
| `onAudioModeChanged` | `AudioMode` | Audio output device changed |
| `onCameraFacingChanged` | `CameraFacing` | Camera switched between front and back |

<AccordionGroup>
<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Audio routed through device loudspeaker |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/idle-timeout.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ Set the idle timeout period using `setIdleTimeoutPeriod()` in `SessionSettingsBu
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setIdleTimeoutPeriod(120) // 2 minutes
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
6 changes: 3 additions & 3 deletions calls/ios/join-session.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,7 +62,7 @@ let sessionId = "SESSION_ID"

let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand DownExpand Up@@ -162,7 +162,7 @@ Use the generated token to join the session. This gives you control over when an
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

// Use the previously generated token
Expand DownExpand Up@@ -221,7 +221,7 @@ CometChatCalls.generateToken(sessionID: sessionId, onSuccess: { [weak self] toke
// Step 2: Join with token
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
15 changes: 8 additions & 7 deletions calls/ios/migration-guide-v5.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
- **Granular event listeners** — 5 focused listener protocols instead of one monolithic `CallsEventsDelegate`
- **`CallSession` singleton** for cleaner session control — all actions on a single object instead of scattered static methods
- **Dedicated `login()` method** — the Calls SDK now handles its own authentication instead of depending on the Chat SDK's auth token or REST APIs
- **Strongly-typed enums** — `AudioModeType`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings
- **Strongly-typed enums** — `AudioMode`, `CallType`, `LayoutType`, `CameraFacing` instead of raw strings

---

Expand All@@ -41,9 +41,10 @@ While v4 APIs will continue to work, migrating to v5 APIs gives you:
No changes required. The `init` API is the same in v5.

```swift
let callAppSettings = CallAppSettings()
callAppSettings.set(appId: "APP_ID")
callAppSettings.set(region: "REGION")
let callAppSettings = CallAppSettingsBuilder()
.set(appID: "APP_ID")
.set(region: "REGION")
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { success in
// Initialized
Expand DownExpand Up@@ -118,7 +119,7 @@ let callSettings = CometChatCalls.callSettingsBuilder
<Tab title="v5">
```swift
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.audio)
.setSessionType(.audio)
.startAudioMuted(false)
.startVideoPaused(false)
.setLayout(.tile)
Expand DownExpand Up@@ -334,7 +335,7 @@ class MyMediaListener: MediaEventsListener {
func onVideoResumed() { }
func onRecordingStarted() { }
func onRecordingStopped() { }
func onAudioModeChanged(audioModeType: AudioModeType) { }
func onAudioModeChanged(audioMode: AudioMode) { }
func onCameraFacingChanged(cameraFacing: CameraFacing) { }
}
callSession.addMediaEventsListener(myMediaListener)
Expand DownExpand Up@@ -373,7 +374,7 @@ v5 listeners use weak references internally, so they are automatically cleaned u
| `onUserJoined(rtcUser:)` | `ParticipantEventListener` | `onParticipantJoined(participant:)` |
| `onUserLeft(rtcUser:)` | `ParticipantEventListener` | `onParticipantLeft(participant:)` |
| `onUserListChanged(rtcUsers:)` | `ParticipantEventListener` | `onParticipantListChanged(participants:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioModeType:)` |
| `onAudioModeChanged(mode:)` | `MediaEventsListener` | `onAudioModeChanged(audioMode:)` |
| `onCallSwitchedToVideo(callSwitchedInfo:)` | *Removed* | — |
| `onUserMuted(rtcMutedUser:)` | `ParticipantEventListener` | `onParticipantAudioMuted(participant:)` |
| `onRecordingToggled(recordingInfo:)` | `MediaEventsListener` | `onRecordingStarted()` / `onRecordingStopped()` |
Expand Down
2 changes: 1 addition & 1 deletion calls/ios/recording.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -124,7 +124,7 @@ class CallViewController: UIViewController, MediaEventsListener {
func onVideoResumed() {}
func onScreenShareStarted() {}
func onScreenShareStopped() {}
func onAudioModeChanged(audioModeType: AudioModeType) {}
func onAudioModeChanged(audioMode: AudioMode) {}
func onCameraFacingChanged(cameraFacing: CameraFacing) {}
}
```
Expand Down
10 changes: 5 additions & 5 deletions calls/ios/ringing.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -115,7 +115,7 @@ extension CallViewController: CometChatCallDelegate {

func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
guard let call = incomingCall else { return }
print("Incoming call from: \(call.callInitiator?.name ?? "")")
print("Incoming call from: \((call.callInitiator as? User)?.name ?? "")")
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -150,7 +150,7 @@ NSString *listenerID = @"UNIQUE_LISTENER_ID";
// Implement CometChatCallDelegate
- (void)onIncomingCallReceivedWithIncomingCall:(Call *)incomingCall
error:(CometChatException *)error {
NSLog(@"Incoming call from: %@", incomingCall.callInitiator.name);
NSLog(@"Incoming call from: %@", ((User *)incomingCall.callInitiator).name);
// Show incoming call UI with accept/reject options
}

Expand DownExpand Up@@ -235,7 +235,7 @@ Reject an incoming call:
<Tab title="Swift">
```swift
func rejectIncomingCall(sessionId: String) {
let status: CometChat.CallStatus = .rejected
let status: CometChat.callStatus = .rejected

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call rejected")
Expand DownExpand Up@@ -270,7 +270,7 @@ Cancel an outgoing call before it's answered:
<Tab title="Swift">
```swift
func cancelOutgoingCall(sessionId: String) {
let status: CometChat.CallStatus = .cancelled
let status: CometChat.callStatus = .cancelled

CometChat.rejectCall(sessionID: sessionId, status: status, onSuccess: { call in
print("Call cancelled")
Expand DownExpand Up@@ -306,7 +306,7 @@ After accepting a call (or when your outgoing call is accepted), join the call s
```swift
func joinCallSession(sessionId: String) {
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setType(.video)
.setSessionType(.video)
.build()

CometChatCalls.joinSession(
Expand Down
14 changes: 7 additions & 7 deletions calls/ios/session-settings.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ These are pre-session configurations that must be set before joining a call. Onc
let sessionSettings = CometChatCalls.sessionSettingsBuilder
.setTitle("Team Meeting")
.setDisplayName("John Doe")
.setType(.video)
.setSessionType(.video)
.setLayout(.tile)
.startAudioMuted(false)
.startVideoPaused(false)
Expand DownExpand Up@@ -97,7 +97,7 @@ Defines the type of call session. Choose `.video` for video calls with camera en
<Tabs>
<Tab title="Swift">
```swift
.setType(.video)
.setSessionType(.video)
```
</Tab>
<Tab title="Objective-C">
Expand DownExpand Up@@ -220,7 +220,7 @@ Controls whether the camera is turned off when joining the session. Set to `true

### Audio Mode

**Method:** `setAudioMode(_ audioMode: AudioModeType)`
**Method:** `setAudioMode(_ audioMode: AudioMode)`

Sets the initial audio output device for the call. Options include `.speaker` for loudspeaker, `.earpiece` for phone earpiece, `.bluetooth` for connected Bluetooth devices, or `.headphones` for wired headphones.

Expand All@@ -232,16 +232,16 @@ Sets the initial audio output device for the call. Options include `.speaker` fo
</Tab>
<Tab title="Objective-C">
```objectivec
[builder setAudioMode:AudioModeTypeSpeaker]
[builder setAudioMode:AudioModeSpeaker]
```
</Tab>
</Tabs>

| Parameter | Type | Default |
|-----------|------|---------|
| `audioMode` | AudioModeType | .speaker |
| `audioMode` | AudioMode | .speaker |

<Accordion title="AudioModeType Values">
<Accordion title="AudioMode Values">
| Value | Description |
|-------|-------------|
| `.speaker` | Device loudspeaker |
Expand DownExpand Up@@ -633,7 +633,7 @@ Hides the button that opens the in-call chat interface. Set to `false` to show t
| `LayoutType` | `.tile` | Grid layout showing all participants equally |
| | `.spotlight` | Focus on active speaker with others in sidebar |
| | `.sidebar` | Main speaker with participants in a sidebar |
| `AudioModeType` | `.speaker` | Device loudspeaker |
| `AudioMode` | `.speaker` | Device loudspeaker |
| | `.earpiece` | Phone earpiece |
| | `.bluetooth` | Connected Bluetooth device |
| | `.headphones` | Wired headphones |
Expand Down
12 changes: 6 additions & 6 deletions calls/ios/setup.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,7 +44,7 @@ pod install
### Using Swift Package Manager

1. In Xcode, go to **File > Add Package Dependencies**
2. Enter the repository URL: `https://github.com/cometchat/cometchat-calls-sdk-ios`
2. Enter the repository URL: `https://github.com/cometchat/calls-sdk-ios`
3. Select the version and add to your target

## Add Permissions
Expand DownExpand Up@@ -84,19 +84,19 @@ The `CallAppSettings` class configures the SDK initialization:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appId` | String | Yes | Your CometChat App ID |
| `region` | String | Yes | Your app region (`us`or `eu`) |
| `region` | String | Yes | Your app region `us`, `eu` or `in` |

<Tabs>
<Tab title="Swift">
```swift
import CometChatCallsSDK

let appId = "APP_ID" // Replace with your App ID
let region = "REGION" // Replace with your Region ("us"or "eu")
let region = "REGION" // Replace with your Region ("us", "eu" or "in")

let callAppSettings = CallAppSettingsBuilder()
.setAppId(appId)
.setRegion(region)
.set(appID: appId)
.set(region: region)
.build()

CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
Expand All@@ -111,7 +111,7 @@ CometChatCalls(callsAppSettings: callAppSettings, onSuccess: { message in
@import CometChatCallsSDK;

NSString *appId = @"APP_ID"; // Replace with your App ID
NSString *region = @"REGION"; // Replace with your Region ("us"or "eu")
NSString *region = @"REGION"; // Replace with your Region ("us", "eu" or "in")

CallAppSettings *callAppSettings = [[[CallAppSettingsBuilder alloc] init]
setAppId:appId]
Expand Down