I just want to ask on how can I determined 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 it display an alert notification
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 :)
As i understand, you want extra data inside payload, so you can identify what push notification type is,or what action need to be handled.
For that edit your payload as:
$body = array(
'content-available' => 1,
'sound' => ''
);
$payload = array();
$payload['aps'] = $body;
$payload['action'] = 'order_update';
Then in your iOS Code:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSString *action = userInfo["action"];
if([userInfo[@"aps"][@"content-available"] intValue]== 1 && [action isEqualToString:@"order_update") //order update notification
{
//handle Your Action here
return;
}
}
Hope this solves your problem!