Search code examples
iosswiftpush-notificationapple-push-notifications

How to send a silent Push Notification payload


I just want to know how I can determine what action to do on a silent push:

This is the aps that I sent to the client:

"aps": {
    "content-available": 1
}

My problem now is when I add type: "Order_Update" to determine that the silent push is for the Order Update to display an alert notification.


Solution

  • There are a few options for it! Let's take a small ride to understand all the different payloads and their usage.


    Simple Payload

    Displayed in Notification Center : Yes

    Wakes app to perform background task : No

    {
        "aps" : {
            "alert" : "You received simple notification!",
            "badge" : 1,
            "sound" : "default"
        }
    }
    

    Payload With Custom Notification Sound

    Displayed in Notification Center : Yes

    Wakes app to perform background task : No

    Step 1 : Add custom notification sound file (.wav or .aiff extensions only. e.g. notification.wav) in your app bundle.

    Step 2 : Configure your payload as shown below to play your custom sound

    {
        "aps" : {
            "alert" : "It's a custom notification sound!",
            "badge" : 1,
            "sound" : "notification.wav"
        }
    }
    

    Notification With Custom Payload

    Displayed in Notification Center : Yes

    Wakes app to perform background task : No

    {
        "aps" : {
            "alert" : "It's a notification with custom payload!",
            "badge" : 1,
            "content-available" : 0         
        },
        "data" :{
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
        },
    
    }
    

    Here the data dictionary holds custom information whatever you want. It will also display as normal notification with the alert message "It's a notification with custom payload!".


    Normal Silent Notification

    It will not a show an alert as a notification bar; it will only notify your app that there is some new data available, prompting the app to fetch new content.

    Displayed in Notification center : No

    Awake app to perform background task : Yes

    {
        "content-available" : 1
    }
    

    Silent Notification With Custom Payload

    Here comes the magic to show a notification alert as well awake your app in background for a task! (Note: only if it's running in background and has not been killed explicitly by the user.) Just add the extra parameter "content-available" : 1 in your payload.

    Displayed in Notification Center : Yes

    Wakes app to perform background task : Yes

    {
        "aps" : {
            "alert" : "Notification with custom payload!",
            "badge" : 1,
            "content-available" : 1
        },
         "data" :{
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
         }
    }
    

    Use any of these payloads according to your app requirements. For background app refresh refer to Apple's documentation. I hope this gives you all the necessary information. Happy coding :)