远程关闭iOS推送通知

时间:2015-02-16 22:00:57

标签: objective-c iphone push-notification apple-push-notifications

适用于iOS的Gmail应用可以在应用未运行时接收推送通知(与大多数电子邮件应用一样)。

但是,当用户收件箱的未读数量变为零时,它也能够清除设备中的所有Gmail推送通知,即使应用程序未运行也是如此。

以下是一个示例序列: 1.在您的Gmail帐户中接收新电子邮件。 2. iOS设备显示新消息的通知。 3.转到Gmail网站并打开邮件(将邮件标记为"阅读")。 4. iOS设备上的通知被驳回。

注意:[[UIApplication sharedApplication] scheduledLocalNotifications]仅提供本地通知,即在iOS应用中自行创建的通知。

就Apple的documentation for APNS所述,无法remotely launch an app into the background,也无法解除远程通知。

那么,Gmail iOS应用如何实现这一目标呢?

4 个答案:

答案 0 :(得分:5)

通过使用Parse推送此有效负载,我能够清除所有推送通知。我猜你只要提供content-availablebadge,你就可以做同样的事情。我没有必要在AppDelegate中编写任何其他代码,但我必须在项目目标capabilities中打开推送通知。

curl -X POST \
-H "X-Parse-Application-Id: xxxxxxxxxxx" \
-H "X-Parse-REST-API-Key: xxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
       "data": {
         "content-available": "1",
         "badge":"0",
         "sound":""
       },
       "where": {"something":"something_else"}
     }' \
https://api.parse.com/1/push

答案 1 :(得分:0)

有一个无声的推动' iOS中的功能,允许您的应用在收到无UI推送通知后在后台唤醒并自行更新。

Session 713 at WWDC 2014详细描述了这一点:

  

无声通知,它们只是从中发送的推送有效负载   你的APNs服务器,而不是像用户那样提出用户通知   iOS收到时屏幕上的警报或声音或徽章   推送,将在后台唤醒您的应用程序,以便   您的应用可以执行一些背景图像处理或信息   处理

     

在这种情况下,您的应用从服务器获取内容在这种情况下,   你的应用程序正在从服务器获取内容,以便下次使用   用户碰巧点击您的应用图标并将其带到前台,   那些信息已准备就绪,所以没有人必须等待   加载微调器以完成所有其他东西。

答案 2 :(得分:0)

如果已设置徽章编号,请尝试此操作

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

或尝试此操作,如果没有设置

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

这会清除您的推送通知和本地通知。

答案 3 :(得分:0)

@styler1972的解决方案适用于批量推送通知删除。如果要删除特定的文件,请遵循此操作。

要远程删除特定的推送通知(PN),您需要在数据库中存储该PN的公共apns-collapse-id。当您想删除它时,只需send another silent push notification with the same apns-collapse-id

To know how to send silent push notification in iOS