Is there an update? I'm having the same issue.
It seems to vary depending on the OS.
It mostly happens in 18.x that doesn't happen in 17.x.
Post
Replies
Boosts
Views
Activity
Thank you for your response. It was helpful.
The core issue is that VoIP push notifications are not being received by the app.
Although the server sends APNs VoIP push notifications, the app does not receive them immediately. (Occurs approximately once in 50 attempts.)
As you suggested, I separated the cases and identified the reproduction path.
The reproduction steps are as follows:
Both Wi-Fi and Cellular are turned on. (In some cases, Wi-Fi is connected, but the Wi-Fi icon does not appear as active.)
The Wi-Fi network is unstable or problematic. (e.g., public or secured Wi-Fi networks.) - cellular is good
The server sends an APNs VoIP push notification, but the app does not receive it.
After a short delay, the push notification is eventually received.
(This case occurs with a 90% probability when Airplane Mode is toggled from Off to On and the push notification is received for the first time.)
From this case, it seems that all iOS apps fail to receive push notifications under these conditions. Once the device returns to a state where it can receive push notifications, the pending push notification is delivered.
Questions:
Is there a way to ensure that APNs push notifications are received via Cellular Mode?
In the described case, it appears that if push notifications cannot be received via Wi-Fi, they are held until Cellular Mode becomes available, at which point they are delivered to the app.
If a push notification is pending under such conditions, we would rather cancel the sent push notification. Is this possible?
And additionally, is there a way to actually check the time when the APNs VoIP Push was sent to the terminal? I couldn't find it even after looking for Production.. I wonder if there is a way.
Thank you. I'm sharing the code again.
[Code]
func getCellularConnectionType() -> String {
if #available(iOS 14.1, *) {
if let radioAccessTechnology = networkInfo.serviceCurrentRadioAccessTechnology?.values.first {
Debug.log("Radio Access Technology: \(radioAccessTechnology)")
switch radioAccessTechnology {
case CTRadioAccessTechnologyLTE:
return "LTE"
case CTRadioAccessTechnologyNRNSA:
return "5G-NSA"
case CTRadioAccessTechnologyNR:
return "5G-SA"
default:
return "ETC"
}
}
}
return "Cellular"
}