Let me be straight to you :) Implementing IOS VoIP Push in Linphone and Asterisk is a headache.. and in the latest version of IOS 13 or 14 is a disaster.
Why We need Push in Softphone and how is it working?
Your app will go to the background after some time and you can receive calls. So we need to send a push to Apple Push Notification Servers that is called APN and tell apple I want to wake up my app and send calls to.
How apple knows it is you and let u send it a push? You need to log in to your apple account and do the necessary steps and create a certificate so that When you call the web service Apple knows it is you. You can find these steps on the internet easily.
Then How Apple Knows who do you want to send a push to? That's via an ID that in every device and app is unique. so you need to have it every time you want to send a push to someone.
so (1) we need to call a web service from apple and (2) send a unique device token that identifies our app that in our scenario is Linphone softphone.