Learn how to integrate and customize CometChat’s call log components to display call history, participant details, and call recordings in your iOS UIKit chat app.

Overview

The CallLogDetailsVC module provides a tabbed interface to view details of past calls:
  • History: Chronological join/leave events.
  • Participants: Users who joined the call.
  • Recordings: Links to cloud-hosted call recordings.
This ensures transparency and auditability for both users and admins.

Prerequisites

  • A UIKit-based iOS project.
  • CometChatSDK, CometChatCallsSDK, and CometChatUIKitSwift integrated.
  • Active internet connection.
  • A valid, logged-in CometChat user.

Components

ComponentRole
CallLogDetailsVCMain container with segmented control and page view.
CallLogParticipantsVCDisplays a list of users who participated in the call.
CallLogHistoryVCShows join/leave history entries with timestamps and statuses.
CallLogRecordingsVCLists call recordings with playback actions.
CallLogDetailsHeaderViewHeader view showing call metadata (title, status, duration).
CallLogUserCellUITableViewCell for participants, history, and recordings entries.
CallLogDetailsModelData model formatting participants, history, and recordings data.
CallLogViewModelFetches and distributes call log data to the UI components.

Integration Steps

1. Present Call Log Details Screen

Show the call log interface for a selected call.
let detailsVC = CallLogDetailsVC(call: call)
navigationController?.pushViewController(detailsVC, animated: true)
File reference:
CallLogDetailsVC.swift
Bundles history, participants, and recordings into a single UI flow.

2. Display Participants List

Populate the participants tab with the call’s members.
participantsTableView.reloadData()
File reference:
CallLogParticipantsVC.swift
Audits who was present in the call.

3. Show Call History

Render join/leave activities in chronological order.
history.append(CallHistoryEntry(...))
tableView.reloadData()
File references: Tracks user join/leave times for transparency.

4. List and Play Recordings

Provide playback links for any recorded calls.
UIApplication.shared.open(url)
File references: Enables admins and users to review call content (if recording enabled).

Customization Options

  • Styling: Customize colors, fonts, and spacing via CometChatTheme, CometChatTypography, and CometChatSpacing in CallLogUserCell and CallLogDetailsHeaderView.
  • Filters: Use CallLogViewModel to filter by call type (incoming, outgoing, missed).
  • Empty States: Implement an EmptyStateView in CallLogHistoryVC for no-history scenarios.

Filtering & Edge Cases

  • No Call Logs: Show a custom empty state instead of a blank table.
  • Pagination: Add lazy loading in scrollViewDidScroll of CallLogHistoryVC to fetch more entries.
  • Blocked Users: In CallLogParticipantsVC, disable profile navigation if the user is blocked.

Error Handling

  • Network/API Errors: Display UIAlertController on fetch failures; expose error via CallLogViewModel delegate.
  • Retry Mechanism: Add pull-to-refresh or a retry button in CallLogDetailsVC.
  • Recording Unavailable: Gracefully disable playback links if URL is missing.

Optional Notes

  • Group Calls vs 1:1 Calls: Customize CallLogParticipantsVC display based on call type and participant roles.
  • Metadata Display: Use CallLogDetailsHeaderView to show titles, call duration, and status icons.

Feature Matrix

FeatureComponent / MethodFile(s)
Show call log details screenCallLogDetailsVC(call:)CallLogDetailsVC.swift
Display participantsCallLogParticipantsVCCallLogParticipantsVC.swift
Display history entriesCallLogHistoryVCCallHistoyTVC.swift, CallLogHistoryVC.swift
List recordingsCallLogRecordingsVCCallLogRecordingsVC.swift, CallRecordingTVC.swift
Header metadataCallLogDetailsHeaderViewCallLogDetailsHeaderView.swift
Data handlingCallLogDetailsModelCallLogDetailsModel.swift
Data fetching & distributionCallLogViewModelCallLogViewModel.swift

Full Sample App

Explore a full sample implementation: GitHub → SampleApp

UIKit Source Code

Review the call log components in the UIKit library: GitHub → Call Log Components