Voip Push notifications missed delay

Hi all,


In our application we Use VoIP Type push notifications to give a heads-up for the mobile phone.


This allows the mobile phone to:


1) If the application is killed, start it in background

2) If the application is in Background, start running the application statemachine

3) If the Phone is in deep sleep, Wake up and start the application in Background


Due to the above, our application arrives in a state where we can receive an incoming voip Call.


It has been observed that there is a delay in the push notification arrival at the mobile phone.

Delayed arrival/delivery of Push notification has been measured of about 6 sec or sometimes never arrives.


This espicially is the case when we have an iPhone without sim-card.

Note :

- This was tested on a controlled setup with large number of iterations with good WiFi and internet connectiviy)

- We ensured during testing that the push was actually dispatched to APNS.


It is unknown as to what exactly causes a variation in the arrival of the voip notification.


Can someone explain why :


- Voip messages arrive late depite they should be 'instant' ?

- What could explain the difference in measurments with/without sim card ?



Best regards.

Replies

I can't explain why but I do experience similar issue, in our test we found that 11.2.2 it is receiving without issues the voip notification, our app wakes up on background correctly.


The difference is that we only experience the issue of never receiving the voip notification when the phone is running on 11.2.5, the same device that was receiving correctly on 11.2.2 after the update to 11.2.5 it stopped waking the app.


Our test initially was focused on different carriers but the real difference seemed to be the iOS version, if the phone was on wifi or connected to debug (Xcode or iOS Console), the voip notification comes correctly.


I'll keep track on this issue and let you know if we found something as workaround.

Hey parapakura,


We are experiencing the issue of never receving the VoIP notification when the Phone is running on 11.2.6 once app is running in background for a extend time.

We have never received this report from customer on any other iOS version.


Do you find any issue or solution on this one?


Please update your finding. Thanks,

Were any of you ever able to resolve this? I've run into an issue where sometimes everything works correctly.... I can recieve a voip push in the foreground, background, or if the app has been swipped away. But then sometimes (roughly 50% of the time) I send a voip push, and the app doesn't wake up at all. When that happens, I have to run the app to see the voip push finally come through. I'm testing on iPhone 8 and iphoneX with iOS 11.3.1.... Oddly enough, testing on an iphone7 it works 100% of the time.

Seems like push are getting almoust everytime, the difference seems to fall on processing power of the device.


If app is not running and gets woken up by a voip push, the didFinishLaunching delegate can be distinguished from a start of the app by tapping on the icon by using


application.applicationState == UIApplicationStateBackground


if this is the case, the information that we are loading for our app is now minimal.


If a device is fast enough our app will do all the actions on didFinishLaunching the push was being received. if the device is old or the actions needed to set up the application are long, seems like watchdog was stopping our app sooner than what we would expect, so the design of the app needed to change to do minimal actions enough to do our voip registration and live enough for the didReceiveIncomingPushWithPayload delegate to be called.


don't forget to use the


withCompletionHandler parameter in order to let apple know that app finished doing its job.


Additional design changes include using "Fetching Small Amounts of Content Opportunistically" (https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html)


-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler


where you download information using

NSURLSession
and make sure to report if you were able to retrieve data "Apps that download small amounts of content quickly, and accurately reflect when they had content available to download, are more likely to receive execution time in the future than apps that take a long time to download their content or that claim content was available but then do not download anything."


This issue was a pain for so long, and not redesigning our apps (almost from scracth) to improve as much as apple wants may become a real issue for many devs.

I see the same behaviour. And that behaviour could change after removing and installing the app again. The device versions and OS versions varies. There is no structure there. We now have about 500 voip calls a day and about 20% of these are failing bacause the push notification could not be handled. That's way too much!

Hello! Maybe someone decided this problem ?