Skip to main content
FCM doesn’t support VoIP pushes; use APNs + PushKit for VoIP calls.

iOS UI Kit Sample App

Reference implementation of iOS UIKit, FCM and Push Notification Setup.

What this guide covers

  • CometChat dashboard setup (enable push, add FCM iOS + APNs providers) with screenshots.
  • Firebase/FCM + CometChat provider wiring (credentials, Podfile, capabilities).
  • Token registration/rotation with CometChat Push Notifications (FCM iOS provider).
  • Incoming message/call handling and deep links.
  • Payload customization and testing.

How FCM + CometChat work together

  • FCM’s role: Firebase issues the iOS FCM registration token and delivers the push payload. On iOS, FCM hands off to APNs using the APNs key/cert you upload in Firebase.
  • CometChat Notifications’ role: The FCM iOS provider you create in the CometChat dashboard holds your Firebase service account. When you call CometChatNotifications.registerPushToken(..., .FCM_IOS, providerId), CometChat binds that FCM token to the logged-in user and sends pushes to FCM on your behalf.
  • Flow (same bridge used in android-push-notifications.mdx): Request permission → register for remote notifications → FCM returns the registration token → after CometChat.login succeeds, register that token with CometChatNotifications using the FCM provider ID → CometChat sends payloads to FCM → FCM hands to APNs → UNUserNotificationCenterDelegate surfaces the notification/tap.

1. Enable push and add providers (CometChat Dashboard)

  1. Go to Notifications → Settings and enable Push Notifications.
Enable Push Notifications
  1. On Firebase:
    • Go to Project Settings → Service accounts and generate a new private key; download the JSON file.
Add FCM credentials
  1. On CometChat Dashboard:
    • Add an FCM iOS provider and upload your Firebase service account JSON; copy the Provider ID.
Add FCM credentials

2. Upload your APNs Certificates

  1. In the Firebase Console, go to Project Settings → Cloud Messaging.
  2. Under iOS app configuration, upload your APNs authentication key or certificates.
Upload APNs Certificates in Firebase Console

3. Prepare Firebase and CometChat

  1. Firebase Console: download and add GoogleService-Info.plist to your target.
Upload APNs Certificates in Firebase Console
  1. Xcode capabilities: Push Notifications, Background Modes → Remote notifications.
Enable Push Notifications and Background Modes for FCM

4. Add dependencies (Podfile)

Run pod install.

5. Wire AppDelegate (Firebase + delegates)

What this code is doing
  • Initializes Firebase, sets MessagingDelegate and UNUserNotificationCenterDelegate, asks for alert/badge/sound permission, and registers for remote notifications.
  • Sets Messaging.messaging().apnsToken so FCM can map the APNs token and later deliver via APNs.
  • Stores the FCM registration token and calls registerStoredPushToken() so CometChat can bind the token to your logged-in user (using the Provider ID you configured).
  • Leaves willPresent to show banners/sounds in foreground instead of silently ignoring the notification.

6. Create FCM helper

Create CometChatFCMHelper.swift and add:
What this helper is doing
  • Wraps permission prompts + delegate wiring so you can call one method from AppDelegate.
  • Sets the notification delegate early and registers for APNs on the main queue (Apple requirement).
  • Keeps all push setup in a reusable singleton to call from tests, scenes, or multi-target setups.

7. Testing checklist

  1. FirebaseApp.configure() runs; FCM token logs after login; registration with CometChat succeeds.
  2. Message from another user:
    • Foreground: willPresent behavior as expected.
    • Background/terminated: tap opens the correct chat.
  3. Rotate the FCM token (didReceiveRegistrationToken) and confirm re-registration.
  4. VoIP: VoIP token registers; incoming call shows CallKit; Accept/Decline controls the CometChat call.

8. Troubleshooting