From the documentation for VoIP Push Notifications:
- The device is woken only when VoIP pushes occur, saving energy.
- Unlike standard push notifications, which the user must respond to before
your app can perform an action, VoIP pushes go straight to your app
for processing.
- VoIP pushes are considered high-priority notifications
and are delivered without delay.
- VoIP pushes can include more data
than what is provided with standard push notifications.
- Your app is
automatically relaunched if it’s not running when a VoIP push is
received.
- Your app is given runtime to process a push, even if your
app is operating in the background.
The biggest advantage of VoIP Push Notifications over regular ones is in my opinion, that the app gets relaunched if it was force-closed.
In general, if you wan't to use the push notifications for VoIP functionality, e.g. to notify about an incoming call, use PushKit. It was developed for this purpose. For all other cases, use regular push notifications. Your app won't go through the review if you use PushKit for an app without VoIP functionality anyways.