Skip to main content

🔔 VoIP Push Notification Setup

⚠️ Important Notes:

  • Real Device Only: iOS VoIP Push only works on physical devices. It does not work on the Simulator.
  • Annual Renewal: VoIP Certificates must be renewed annually on the Apple Developer Portal and updated on the Pitel Portal.

🌟 Overview

When a user receives a call, Pitel Server sends a push notification to your app. The app then wakes up via CallKit to display the native incoming call UI.

Pitel VoIP Flow

Native Call Experience

iOS (Alert)iOS (Lock Screen)iOS (Full Screen)

🛠 Step-by-Step Guide

📌 Step 1: Apple Developer Configuration

You need to generate two items: a VoIP Services Certificate (for CallKit) and an APNs Key (for Firebase).

1.1 Create VoIP Services Certificate

  1. Go to Apple Developer Certificates.
  2. Click (+) to create a new certificate.
  3. Select VoIP Services Certificate under Services. push_img_10
  4. Choose your App ID and click Continue. push_img_9
  5. Upload your Certificate Signing Request (CSR) and Download the .cer file. push_img_8
  6. Follow the instructions to create a certificate signing request.
  7. Double-click the .cer file to install it into Keychain Access.
  8. Right-click the certificate in Keychain Access and export it as a .p12 file. (Keep this file for Step 4). push_img_7

1.2 Create APNs Key (For Firebase)

  1. Go to Keys in the Apple Developer sidebar.
  2. Create a new key and enable Apple Push Notifications service (APNs). apns_key
  3. Download the .p8 file. (Keep this file for Step 3).

📌 Step 2: Xcode Project Configuration

2.1 Enable Capabilities

Open your project in Xcode → Signing & Capabilities:

  1. Add Push Notifications.

  2. Add Background Modes and check the following:

    • Voice over IP
    • Background fetch
    • Remote notifications

    push_img_5

2.2 Add Firebase Configuration

  1. Download GoogleService-Info.plist from your Firebase Console.

  2. Drag and drop it into your Xcode project root.

  3. Important: Ensure "Copy items if needed" is checked.

    ios_google_service_2


📌 Step 3: Firebase & Server Configuration

3.1 Upload APNs Key to Firebase

  1. Go to Firebase Console → Project Settings → Cloud Messaging.
  2. Under Apple app configuration, locate your iOS app. ios_app
  3. Upload the .p8 APNs Key (from Step 1.2).
  4. Enter your Key ID and Team ID. upload_key_firebase_popup

3.2 Generate Service Account

Pitel Server uses this to send push notifications on your behalf.

  1. In Firebase Console, go to Project SettingsService Accounts.
  2. Click Generate new private key. fcm7
  3. A .json file will be downloaded. (Keep this file for Step 4). fcm8

🚀 Step 4: Update Pitel Portal

Finally, upload the necessary credentials to the Pitel Portal to activate VoIP services.

  1. Upload .p12 File: The VoIP Certificate from Step 1.1.
  2. Upload .json File: The Service Account file from Step 3.2.

Note: Ensure you have configured your app on the portal as described in the Portal Guide.


✅ Testing

Run the app on a Real Device (iPhone) to test receiving calls in the background and locked state.

push_img_1