Reputation: 113
I am developing an iOS app using Swift which has push notification feature. The app sends Birthday reminders notifications to the users via push notifications (APNS used here).
Currently, the push notification remains in the device's notification center until the user taps on that notification or opt to clear it from the device.
Now I am looking for a way to automatically delete that push notification at the end of every day as there is no need of showing past day's birthday notifications in the device.
Can someone suggest me a solution that in which way I can implement this? Is it possible to delete notification from iOS without having any user interaction?
Upvotes: 10
Views: 14992
Reputation: 171
This for scenario when the app is forcefully terminated by the user :
First of all send nonzero badge when you want to send Birthday reminders notifications to the users via push notifications , For example :
{
"aps": {
"alert": {
"title": "Hey! Urgent Reminder",
"body": "Do not forget my wife SURPRISE BIRTHDAY PARTY"
},
"badge": 1
}
}
After that , When there is no need of showing notifications in the device , you can send silent notification with zero badge that will clear badge and notifications even if app is forcefully terminated by the user but didReceiveRemoteNotification
will not called because app is terminated.
payload for silent push notification :
{
"aps" : {
"content-available" : 1,
"badge" : 0,
"Priority" : 10
}
}
After send that payload will automatically clear badge and delete push notification from Notification Center.
Note that if badge was zero before sending silent notification , will not clear notifications.
Upvotes: 5
Reputation: 4941
In order to remove the specific notification from the Notification center automatically,
How to remove notification from the notification center programmatically?
When server send you any notification via APNS server using the APNS endpoint, the APNS will return you some data as a payload, you will get the notification identifier as a apns-id
key in the response header
Store that apns-id
value in your database table at the server side.
At the end of day or with specific condition criteria, you can delete that notification from the device's notification center by sending another request to APNS by Passing the apns-id
value in the request header.
Skype is doing the same thing.
Read this for more details: https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#//apple_ref/doc/uid/TP40008194-CH11-SW1
Upvotes: 3
Reputation: 63
In case anyone else ends up here looking for a way to clear notifications without sending a background push, I spent a few hours attempting to replicate the accepted answer, specifically:
you can delete that notification from the device's notification center by sending another request to APNS by Passing the apns-id value in the request header.
And it did not work for me at all. As far as I can tell the only way to remove notifications is via a content-available background push. Though I would love to be proven wrong!
Upvotes: 3