Hello,
In our Freeswitch service, freeswitch can successfully forward the call to apple devices. Therefore, I can see the 200 OK response in the Freeswitch logs, but the notification does not reach the device. Also api.push.apple.com (17.188.172.27) is not pinged in freeswitch.
I achieved this with the token of the apple device and the uuid generator I generated from the internet.
etc/freeswitch/fs_scripts/apple# sh apple_notify.sh ad1ca6a937ada1ee678813c2c579bc04b9b71995bf3310f8f7973864b41d47bb 43f40cc4-0e26-42a7-87e6-5abbc448adcf
* Trying 17.188.170.94...
* TCP_NODELAY set
* Expire in 4948 ms for 3 (transfer 0x55a5ce930ed0)
* Expire in 200 ms for 4 (transfer 0x55a5ce930ed0)
* Connected to api.push.apple.com (17.188.170.94) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Request CERT (13):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS handshake, CERT verify (15):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=California; O=Apple Inc.; CN=api.push.apple.com
* start date: Jun 19 16:31:31 2024 GMT
* expire date: Apr 10 00:00:00 2025 GMT
* subjectAltName: host "api.push.apple.com" matched cert's "api.push.apple.com"
* issuer: CN=Apple Public Server RSA CA 12 - G1; O=Apple Inc.; ST=California; C=US
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55a5ce930ed0)
> POST /3/device/ad1ca6a937ada1ee678813c2c579bc04b9b71995bf3310f8f7973864b41d47bb HTTP/2
> Host: api.push.apple.com
> User-Agent: curl/7.64.0
> Accept: */*
> apns-topic: org.mobikob.app.voip
> apns-priority: 10
> Content-Type: application/json
> apns-expiration: 0
> apns-push-type: voip
> Content-Length: 86
>
* We are completely uploaded and fine
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 1000)!
< HTTP/2 200
< apns-id: B03898AD-DD65-76D9-246D-56A8E8A4CFA7
<
* Connection #0 to host api.push.apple.com left intact
However, the problem here is that there is no failed log to the apple device. In other words, freeswitch says I am sending as APN, (200 OK) Apple side confirms this (response below) but there is no log coming to the device. To clarify, below is the Apple's response to the relevant ticket.
The problem is that the apple device cannot receive calls when the application is closed. Push notification settings are correct and we have confirmed that there is no problem with certificates.
Has anyone encountered such a problem before? I am quite new to these issues and I started a membership in order to ask.
Apple Developer Team's response ;
The push team has investigated this push and confirmed that it was in fact delivered to your device.
What investigation of this have you done from the device side? From past experience, the overwhelming majority of device failures are caused by bugs in the target voip app. Common issues include:
-Choosing to not report a call to CallKit as the API requires.
-Failing to properly initialize in background launch scenarios, particularly prior to first unlock.
-Assuming the user would log into the app at launch, which will not occur in background launches.
-Kevin
In our Freeswitch service, freeswitch can successfully forward the call to apple devices. Therefore, I can see the 200 OK response in the Freeswitch logs, but the notification does not reach the device. Also api.push.apple.com (17.188.172.27) is not pinged in freeswitch.
I achieved this with the token of the apple device and the uuid generator I generated from the internet.
etc/freeswitch/fs_scripts/apple# sh apple_notify.sh ad1ca6a937ada1ee678813c2c579bc04b9b71995bf3310f8f7973864b41d47bb 43f40cc4-0e26-42a7-87e6-5abbc448adcf
* Trying 17.188.170.94...
* TCP_NODELAY set
* Expire in 4948 ms for 3 (transfer 0x55a5ce930ed0)
* Expire in 200 ms for 4 (transfer 0x55a5ce930ed0)
* Connected to api.push.apple.com (17.188.170.94) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Request CERT (13):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS handshake, CERT verify (15):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=California; O=Apple Inc.; CN=api.push.apple.com
* start date: Jun 19 16:31:31 2024 GMT
* expire date: Apr 10 00:00:00 2025 GMT
* subjectAltName: host "api.push.apple.com" matched cert's "api.push.apple.com"
* issuer: CN=Apple Public Server RSA CA 12 - G1; O=Apple Inc.; ST=California; C=US
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55a5ce930ed0)
> POST /3/device/ad1ca6a937ada1ee678813c2c579bc04b9b71995bf3310f8f7973864b41d47bb HTTP/2
> Host: api.push.apple.com
> User-Agent: curl/7.64.0
> Accept: */*
> apns-topic: org.mobikob.app.voip
> apns-priority: 10
> Content-Type: application/json
> apns-expiration: 0
> apns-push-type: voip
> Content-Length: 86
>
* We are completely uploaded and fine
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 1000)!
< HTTP/2 200
< apns-id: B03898AD-DD65-76D9-246D-56A8E8A4CFA7
<
* Connection #0 to host api.push.apple.com left intact
However, the problem here is that there is no failed log to the apple device. In other words, freeswitch says I am sending as APN, (200 OK) Apple side confirms this (response below) but there is no log coming to the device. To clarify, below is the Apple's response to the relevant ticket.
The problem is that the apple device cannot receive calls when the application is closed. Push notification settings are correct and we have confirmed that there is no problem with certificates.
Has anyone encountered such a problem before? I am quite new to these issues and I started a membership in order to ask.
Apple Developer Team's response ;
The push team has investigated this push and confirmed that it was in fact delivered to your device.
What investigation of this have you done from the device side? From past experience, the overwhelming majority of device failures are caused by bugs in the target voip app. Common issues include:
-Choosing to not report a call to CallKit as the API requires.
-Failing to properly initialize in background launch scenarios, particularly prior to first unlock.
-Assuming the user would log into the app at launch, which will not occur in background launches.
-Kevin