I send voip notifications using curl to apns server. I use the following script:
curl -v \-header "apns-topic: **.voip" \
-header "apns-priority: 10" \
-header "apns-push-type: voip" \
-header "apns-expiration: 0" \
-cert-type P12 --cert *** \
-data '{}' \
-http2 \
https://${APNS_HOST_NAME}/3/device/${DEVICE_TOKEN}
I disable wifi and cellular data for 1 min and send voip notication. apns-expiration header works fine when APNS_HOST_NAME is api.sandbox.push.apple.com - I don't receive voip notification. But when APNS_HOST_NAME is api.push.apple.com - I receive voip notification when I enable wifi back after 1 min, 1.5 min ...
I'm not sure what is wrong and what causes such difference in sandbox and production modes. Does anyone know how to solve this?