Table of Contents
Zoiper PUSH proxy
Zoiper for mobile (iOS & Android) is to be released with push notification support (APNS and Firebase Cloud Messaging) for incoming calls.
For best battery savings on Android and iOS, allow at least 600s re-registration times (longer is better) on the SIP Registrar or PBX.
Introduction and background info
Due to recent changes on the iOS and Android operating systems, incoming calls on Zoiper no longer work reliably in background under any set of conditions used up until now.
On iOS this is due to the deprecation of VoIP sockets, while recent Android powered phones restrict how often apps can wake up while in background.
The only way to have reliable incoming calls is by using Firebase Cloud Messaging (FCM) on Android and APNS on iOS.
Due to technical limitations on both platforms involving matching certificates between client and server, it is impossible for a VoIP operator to add a notification server to their existing network without having a custom application linked to their server.
The standard approach as implemented by competing softphones, is to upload the user credentials to an intermediate VoIP server which takes over the task of registering to the operator's SIP server. This method requires storing all credentials in plaintext or with an easily reversible encryption.
Zoiper values extremely the security of our millions of users, and we deem storing all our users' credentials on our servers irresponsible.
To avoid such a scenario, Zoiper has spent the last year developing a novel approach to an intermediate notification server.
Under this scenario, all user registrations are routed through our server, and at no point in time does our server have access to the plaintext credentials.
How it works
When our server detects a registration is about to expire, a silent push notification will be sent to Zoiper, which will wake it up to re-register to the server, and afterwards to set it back to 'sleep'.
Each registration requires up to 30 seconds of maximum power on the 3G/4G network (from the phone/device), resulting in a high battery drain. So the more time between registrations, the longer the battery life will be on users' devices.
As Zoiper has a default re-registration time of one month (2 600 000 seconds), only one wakeup per month is necessary, leading to negligible battery consumption.
This of course assumes the fact that a user keep the app open, without force closing it, turning off or restarting the device.
We encourage all SIP server administrators to allow Zoiper softphones to use very long re-registration times.
You can check an approximation of battery usage while in background in comparison to registration time:
In order for you to use Zoiper mobile PUSH proxy services, make sure that your device of choice, either an iOS or an Android powered mobile phone or tablet, has public internet access to Apple's and Google's servers.
NOTE: For use of devices in a closed / private / restricted network, do please consult with the official guidelines from Apple and Google, found on their websites:
Apple - https://support.apple.com/en-us/HT203609
Google - https://firebase.google.com/docs/cloud-messaging/concept-options#ports_and_your_firewall
In addition to all of the above, the device(s) in use need to have unrestricted access to Zoiper's proxy servers, otherwise the service will not work.
Make sure that your closed / private / restricted network allows Zoiper to reach our servers:
IP - 126.96.36.199/27 , port 443
Some operators are enforcing low-reregistration times (less than 10 minutes) to keep NAT bindings open, to minimize failed incoming calls due to UDP NAT binding timeouts.
This method is unreliable as many routers (e.g. Sonicewall) utilize a UDP timeout of 30 seconds.
Not only will it not work reliably, it will also lead to significant battery usage on mobile phones as shown in the graph above.
As the APNS and FCM notifications use TCP and are not impacted by the low UDP NAT timeouts, no mechanism is needed to keep the UDP NAT open for Zoiper clients.
If the SIP registrar does not allow separate re-registration times for Zoiper clients and legacy phones, we recommend increasing all re-registration times, and to use SIP keep alive packets or OPTION packets sent from either the phones or the SIP server to keep the UDP NAT bindings alive for the legacy phones.
Our proxy server will acknowledge those keep alive packets locally, without waking up the phones.
The server should allow for re-registration times of at least 1 hour, but preferably up to 1 month (2 600 000 seconds).
Zoiper will automatically select the best re-registration time based on protocol used and the presence of a push server.
Allow for frequent re-registrations for mobile clients (100+ per hour). Poor network connectivity will lead to frequent switching between cellular and WiFi networks.
DO NOT RELY on SIP re-registration times to keep NAT binding open, use SIP keep alive packets instead. These will be filtered out by the Zoiper push proxy servers.