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 Settings → Service 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