Just wanted to share what I discovered today with my testing. You will need to create a new APNs cert if you haven't done that lately and are using cert based push notifications. They have updated the text to read:
Apple Push Notification service SSL (Sandbox & Production)
Establish connectivity between your notification server, the Apple Push Notification service sandbox, and production environments to deliver remote notifications to your app. When utilizing HTTP/2, the same certificate can be used to deliver app notifications, update ClockKit complication data, and alert background VoIP apps of incoming activity. A separate certificate is required for each app you distribute.
After I updated my cert, I was able to get the incoming push notification to properly deliver to:
func incomingPushResult(channelManager: PTChannelManager, channelUUID: UUID, pushPayload: [String : Any]) -> PTPushResult
I was using a simple script that calls curl like this:
curl -v \
-d '{"activeSpeaker":"Bart"}' \
-H "apns-push-type: pushtotalk" \
-H "apns-topic: <insert your bundle id here>.voip-ptt" \
-H "apns-priority: 10" \
-H "apns-expiration: 0" \
--http2 \
--cert key.pem \
https://api.sandbox.push.apple.com/3/device/8f12332d93d45d39d407368175e07b76d2494d0d67439289b3a50c7bd6f8f206
Also, I noticed that PTChannelTransmitRequestSource is always of type .unknown when the system UI is used to transmit.
I would love to have some sample code too. I'm still working on hooking up the portions of my app that would record/playback the audio.