After updating to iOS 15, our app is no longer receiving voip notifications when in a not running (killed) state. However, voip notifications come through just fine if the app is in the foreground or background.
This behavior is specific to iOS 15, as testing the same exact build on iOS 14 works in all 3 states: foreground, background, & killed. Looking through the device console, I see the following logs coming through when running the app on iOS 15:
Killing VoIP app because it failed to post an incoming call in time
VoIP app failed to post incoming call
and then eventually:
VoIP app no longer eligible to launch
I'm aware about needing to report the call to CallKit immediately - this is what we're doing (i.e. it works fine on iOS 14). And after reviewing the PushKit & CallKit docs, I see no changes that would affect this.
Also, I tested this with the Facebook Messenger app, and the same problem was happening; no voip received when the app is killed on iOS 15, but on iOS 14 it works fine.
Anyone know what's going on here?
Not entirely sure what changed between iOS 14 & 15, but initializing the push registry with a custom queue (non-main) seems to fix the problem:
PKPushRegistry(queue: self.voipQueue)
Really confusing that the public-facing PushKit API hasn't changed between these releases, but something under-the-hood was tweaked enough to cause these issues. That being said, there is a small note in the PushKit docs that lead me to this answer: "It is recommended that you specify a serial queue for this parameter". Maybe this point should be emphasized more 😆