当应用程序未处于运行状态时(非活动状态)下载所有推送通知

时间:2018-06-06 19:23:24

标签: ios objective-c iphone swift apple-push-notifications

当我的应用未运行时,我可以下载所有通知的方式是什么。我的有效负载已经具有关键内容 - 可用:1。但我能够获取用户正在点击的数据。有什么方法可以计算当我的应用程序处于非活动状态时设置了多少通知并设置了徽章编号。

2 个答案:

答案 0 :(得分:0)

您需要在项目目标功能中打开推送通知,然后像这样制作有效负载:

{
   "data": {
     "content-available": "1",
     "badge":"0",
     "sound":""
   },
   "where": {"test":"something_test"}
}

将徽章添加到0会清除所有远程推送通知,您可以阅读有关静音推送的更多信息Here

答案 1 :(得分:0)

我找到了一种方法,可以在应用被终止时下载推送通知。但是徽章计数器,但是在应用程序被杀死时无法设置。您只能在应用程序中放置一个侦听器扩展,这会将应用程序从非活动状态调用到后台并全部下载。或者您可以通过服务器设置徽章,但是那时您还必须在服务器上维护徽章。以下是在您的应用被终止时下载全部推送的代码。

每当应用程序被杀死时,所有通知都会进入通知中心,并且有两个可以打开您的应用程序,i)通过点击设备的任何推送通知中心ii)通过点击应用程序图标。 无论选择哪种方式打开应用程序,都可以在下面的代码中编写代码,以在应用程序处于非活动模式时下载所有推送。 在

didFinishLaunchingWithOptions

[[UNUserNotificationCenter currentNotificationCenter] getDeliveredNotificationsWithCompletionHandler:^(NSArray * _Nonnull通知){             如果(notifications.count> 0){                 AudioServicesPlaySystemSound(1315);                 用于(withNotifications中的UNNotification *通知){         // NSLog(@“ msg noti%@”,notification.request);        // [identifierArr addObject:notification.request.identifier];         NSLog(@“ ~~~>%@”,notification.request.identifier);         dispatch_async(dispatch_get_main_queue(),^ {             [self handlePushDatainKilledMode:notification.request.content.userInfo tappedByUser:false];             //在后台执行的缓慢操作         });     }     NSLog(@“ ~~~>删除所有通知”);     [[UNUserNotificationCenter currentNotificationCenter]删除所有已传递的通知];             }         }];

另外重要的一点是,一旦下载并删除,则将其删除,并在再次打开该应用程序时将其保存,如果您在另一didreceive推送中处理了任何事情,它也会在该副本中复制每个推送通知。

我正在编写此解决方案,也许对某些人有帮助或节省了他的时间。 谢谢。