Simply pass the
content_available: true parameter in the Send Notifications API request body and omit the notification object to send a silent notification:
{
"to": "a6345d0278adc55d3474f5",
"data": {
"silentPayloadData": "Hello World"
},
"content_available": true
}
Note: Silent notifications require the Background Modes -> Remote Notifications capability to be enabled in the Xcode project settings.
Additional Note: Due to Apple platform restrictions, silent notifications will not be delivered to your app if it has been swiped away from the recent apps / killed. If you'd like notifications to be received in this scenario, please consider sending regular (non-silent) iOS notifications, without the
content_available: true flag. Otherwise, if you'd like to be able to execute code in the background in response to an incoming notification even when your app is killed, consider using the mutable_content: true flag. This requires implementing a Notification Service Extension, and a visible notification will need to be displayed after your code finishes executing.Furthermore, Apple restricts the number of silent (
content_available: true) notifications you can send to a device in a given day to about 5. Sending too many to the same device in a single day, or sending them in quick succession, will lead to those notifications being throttled (and dropped) by APNs.Sending a silent notification will silently invoke your
pushy.setNotificationHandler() even when your app is in the background:// Handle push notifications
pushy.setNotificationHandler({ (data, completionHandler) in
// Print notification payload data
print("Received notification: \(data)")
// Consume your custom payload in the background silently
if data["silentPayloadData"] {
print("This is a silent notification")
}
// Call this completion handler when you finish processing
// the notification (after fetching background data, if applicable)
completionHandler(UIBackgroundFetchResult.newData)
})
You may execute a network request at this time to fetch additional data, and afterwards, display a local notification if you wish.