For receiving audio in PushtoTalk, channelManager(_:didActivate:) not called when app receives first push after backgrounding

I'm implementing the PushToTalk framework and have encountered an issue where channelManager(_:didActivate:) is not called under specific circumstances.

What works:

  • App is in foreground, receives PTT push → didActivate is called ✅
  • App receives audio in foreground, then is backgrounded → subsequent pushes trigger didActivate ✅

What doesn't work:

  • App is launched, user joins channel, then immediately backgrounds
  • PTT push arrives while app is backgrounded
  • incomingPushResult is called, I return .activeRemoteParticipant(participant)
  • The system UI shows the speaker name correctly
  • However, didActivate is never called
  • Audio data arrives via WebSocket but cannot be played (no audio session)

Setup:

  • Channel joined successfully before backgrounding
  • UIBackgroundModes includes push-to-talk
  • No manual audio session activation (setActive) anywhere in my code
  • AVAudioEngine setup only happens inside didActivate delegate method
  • Issue persists even after channel restoration via channelDescriptor(restoredChannelUUID:)

Question: Is this expected behavior or a bug? If expected, what's the correct approach to handle incoming PTT audio when the app is backgrounded and hasn't received audio while in the foreground yet?

For receiving audio in PushtoTalk, channelManager(_:didActivate:) not called when app receives first push after backgrounding
 
 
Q