Overview
TheCallLogDetailsVC
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.
Prerequisites
- A UIKit-based iOS project.
- CometChatSDK, CometChatCallsSDK, and CometChatUIKitSwift integrated.
- Active internet connection.
- A valid, logged-in CometChat user.
Components
Component | Role |
---|---|
CallLogDetailsVC | Main container with segmented control and page view. |
CallLogParticipantsVC | Displays a list of users who participated in the call. |
CallLogHistoryVC | Shows join/leave history entries with timestamps and statuses. |
CallLogRecordingsVC | Lists call recordings with playback actions. |
CallLogDetailsHeaderView | Header view showing call metadata (title, status, duration). |
CallLogUserCell | UITableViewCell for participants, history, and recordings entries. |
CallLogDetailsModel | Data model formatting participants, history, and recordings data. |
CallLogViewModel | Fetches 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.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.CallLogParticipantsVC.swift
Audits who was present in the call.
3. Show Call History
Render join/leave activities in chronological order.4. List and Play Recordings
Provide playback links for any recorded calls.Customization Options
- Styling: Customize colors, fonts, and spacing via
CometChatTheme
,CometChatTypography
, andCometChatSpacing
inCallLogUserCell
andCallLogDetailsHeaderView
. - Filters: Use
CallLogViewModel
to filter by call type (incoming, outgoing, missed). - Empty States: Implement an
EmptyStateView
inCallLogHistoryVC
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
ofCallLogHistoryVC
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 viaCallLogViewModel
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
Feature | Component / Method | File(s) |
---|---|---|
Show call log details screen | CallLogDetailsVC(call:) | CallLogDetailsVC.swift |
Display participants | CallLogParticipantsVC | CallLogParticipantsVC.swift |
Display history entries | CallLogHistoryVC | CallHistoyTVC.swift , CallLogHistoryVC.swift |
List recordings | CallLogRecordingsVC | CallLogRecordingsVC.swift , CallRecordingTVC.swift |
Header metadata | CallLogDetailsHeaderView | CallLogDetailsHeaderView.swift |
Data handling | CallLogDetailsModel | CallLogDetailsModel.swift |
Data fetching & distribution | CallLogViewModel | CallLogViewModel.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