logo
In-app Chat
SDK Error Codes
Powered Byspreading
On this page

Implement VoIP notification

Overview

The VoIP notification offers the same experience on your app as a voice call provided by an ISP carrier.

Prerequisites

Before you implement the VoIP notification feature, make sure that the following conditions are met:

  • ZPNs SDK 2.1.0 or later is integrated, and offline push notification is implemented. For more information, see Implement offline push notification.
  • Notification permission is obtained from the user.
  • Push Notifications is added to the Capabilities pane in your Xcode project.

Implementation Process

1
Apply for a VoIP service certificate

Go to developer.apple.com, and apply for a VoIP service certificate, which is a .cer file. For more information, see Create VoIP services certificates at Apple official website.

2
Export the .p12 file

Double-click the certificate file to install it on Keychain Access. In the left-side navigation pane, click login. On the Keychain Access page, click the Certificate tab, find the certificate file, and export the .p12 file.

3
Obtain resourceID

Please contact ZEGOCLOUD technical support to obtain resourceID with the iOS VoIP policy from.

4
Add Background Modes Capabilities

Open your project in Xcode. On the Signing & Capabilities tab, click Capability. In the pop-up window, double-click Background Modes.

In the configuration area of Background Modes, select Voice over IP, Background fetch, and Remote notifications.

5
Import the PushKit and CallKit libraries

Import the PushKit and CallKit libraries.

6
Apply for Notification Permission

Call the applyNotificationPermission method to request the user's consent for the app's notification permission.

Untitled
ZPNs.getInstance().applyNotificationPermission();
1
Copied!
7
Enable VoIP

Before using VoIP, you need to call registerPush and set enableDebug to true. And set the current iOS environment by call enableDebug method.

Untitled
// true for development environment; false(default value) for production environment.
ZPNs.enableDebug(true);

ZPNs.getInstance().registerPush({ enableIOSVoIP: true });
1
Copied!
Warning

Please accurately fill in the enableDebug parameter based on the development environment or production environment (signing with a development certificate for development environment during packaging, and signing with a distribution certificate for production environment). Otherwise, ZPNs server will not be able to select the appropriate push certificate to send offline push requests to APNs correctly. The delivery rate and latency of APNs are better in the production environment than in the development environment.

8
Get the pushID with VoIP token

Get the pushID with VoIP token through the onRegistered method.

Untitled
ZPNs.getInstance().on("registered", function (message) {
     console.log("[ZPNs] registered. pushID: " + message.pushID + ", error: " + message.errorCode);
 });
1
Copied!
9
Send and receive a VoIP notification
  • Send a VoIP notification
Note

Obtain resourceID with the VoIP policy from ZEGOCLOUD Technical Support.

In the Call invitation scenario or other scenarios that require VoIP notifications, pass in resourceID in the ZIMPushConfig method to set the push to a VoIP push.

Untitled
var pushConfig = {
    resourcesID: "your resourcesID", // Contact ZEGO technical support for the configured resourcesID
    title: "System call title",
    payload: "Business required pass-through field",
    content: "your content",
    voIPConfig:{
        'iOSVoIPHandleType': ZIMCXHandleType.Generic,
        'iOSVoIPHandleValue': 'Sender contact information',
        'iOSVoIPHasVideo': true
    }
};
1
Copied!
  • Receive a VoIP notification

To facilitate RN developers to use iOS native Callkit library interfaces, ZEGOCLOUD encapsulates the relevant interfaces into the zego-callkit-react-native plugin. Please refer to CallKit.

Previous

Integrate APNs

Next

Customize notification sound