This article will illustrate push mechanism for mobile linkus app when it is in background and mainly share checklists for the problem why linkus app doesn't receive calls after it goes into standby.
After you login linkus, it will start to send register packet to pbx and thus in pbx monitor, the status will be available with green tick, at the beginning with this situation linkus app works like a softphone and it would send and receive packet properly so it would be able to receive calls without any issue. While to save battery and mobile data consumption, you might close mobile screen and put it in your pocket, in this case linkus app is no longer able to send or receive packets from pbx, after soon in pbx monitor the extension status will become offline like extension never got registered, while this is quite normal symptom, related topic for this symptom is post in this article https://support.yeastar.com/hc/en-us/articles/360012607813-Why-Extension-Status-Turns-Offline-when-Linkus-Mobile-Client-Is-Not-in-Use-.
Even so it doesn't mean linkus app no longer receives any call, push notification mechanism is implemented for such situation, ensuring calls won't be missed, go to below links to learn more if you are interested in.
- iOS: CallKit - https://developer.apple.com/documentation/callkit
- Android: Firebase - https://firebase.google.com/docs/cloud-messaging/
Take IOS for example, here is the network topology from Apple Inc. website.
The Provider means PBX, when linkus app is in standby mode and happens to be dialed, PBX would not send INVITE to linkus app because it is 'offline' with no available contact address saved in pbx so PBX doesn't know where to send it, while PBX would start to notify APNs(Apple Push Notification Server) with domain api.push.apple.com and TCP 443 port, if mobile phone is still able to access internet, it would receive notification from APNs, so you will hear the ring and ready to answer it by tapping the answer arrow, have to note that even it rings in this situation, it is not initial INVITE packet that triggers ringing, it is APNs makes the fake ring. After you tap answer arrow it would wake up linkus app and linkus app starts to launch registration to PBX, at this moment if internet access from mobile phone to PBX is going well, linkus extension will get registered, later PBX would have idea for the registered IP address and starts to send initial INVITE to the IP, so linkus receives the call at last.
Totally when linkus app is in background and happens to be dialed, two events are happening.
- PBX Communicates with Apple Push Notification Server
- Linkus APP Launches registration after receiving notification which triggered by APNs
Especially for second point, it always comes out when you are home or out of office where phone network is not able to reach PBX but possible to receive notification(fake ring) from APNs and you probably thought it's an incoming call, that's why you will receive 'call' outside office and display registering when you try to answer the 'call'.
So when you face the problem linkus app doesn't receive calls in background, below checklists are recommended.
- Check dns server whether it is able to find IP address for push server domain api.push.apple.com.
- Check pbx if it's able to communicate with APNs TCP 443 port without any firewall problem.
- Check date and time in PBX to match local time without any time lag.
- Check country defense if you enable it and allow the country which owns dns server.
- Check internet if linkus app is able to access PBX.
For android phones, a slight difference is on the domain, it is with fcm.googleapis.com, other checklists are the same.
Here attach some normal traces for reference.
To successfully capture pcap trace for simulation, you should remain linkus in standby mode then START capture before dialing linkus extensions.
- PCAP traces from PBX for the working flow:
In attached pcap file, each ip address is introduced below.
PBX IP address: 192.168.29.113
calling IP addr: 192.168.29.47
callee IP addr: 192.168.29.51(linkus app in background)
APNs ip addr: 184.108.40.206(dynamic, not unique)
- System log from PBX for the working flow(Enable sip debug level in advance before dialing linkus extension):
For s-series PBX, go to maintainance - download system log - linkus.log
For p-series PBX, go to maintainance - download system log - mobile.log
You would find similar attached trace if the push notification from PBX to APNs is successful.
- Linkus app trace from mobile phone post via feedback portal for the working flow(this trace only can be read by yeastar):