当应用程序未处于 运行 状态(Inactive 状态)时下载所有推送通知
Download all Push notificaiton when app is not in running state (Inactive state)
当我的应用不是 运行 时,我可以通过什么方式下载所有通知。我的有效载荷已经有关键内容可用:1。但是我能够获取用户正在点击的数据。有什么方法可以计算当我的应用程序处于非活动状态时收到的通知数量并设置徽章编号。
您需要在项目目标功能中打开推送通知,然后像这样制作您的负载:
{
"data": {
"content-available": "1",
"badge":"0",
"sound":""
},
"where": {"test":"something_test"}
}
将徽章添加到 0 会清除所有远程推送通知,您可以阅读更多有关静默推送的信息Here
我找到了一种可以在应用程序被终止时下载推送通知的方法。但是徽章计数器,但是在应用程序被杀死时是不可能设置的。只能在您的应用程序中放置一个侦听器扩展,这会将您的应用程序从非活动状态调用到后台并下载所有内容。或者你可以通过服务器设置徽章,但那时你也必须在服务器上维护徽章。下面是当你的应用程序被杀死时下载所有推送的代码。
每当应用程序被杀死时,所有通知都会进入通知中心,并且有两个可以打开您的应用程序,i) 通过点击设备的任何推送通知中心 ii) 通过点击应用程序图标。
无论您选择以何种方式打开应用程序,您都可以编写以下代码以在您的应用程序处于非活动模式时下载所有推送。
在
didFinishLaunchingWithOptions
[[UNUserNotificationCenter currentNotificationCenter] getDeliveredNotificationsWithCompletionHandler:^(NSArray * _Nonnull notifications) {
如果(notifications.count > 0){
音频服务播放系统声音(1315);
for (UNNotification* notification in withNotifications) {
//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]removeAllDeliveredNotifications];
}
}];
同样重要的部分是在您下载后删除并在您再次打开应用程序时保存其他内容,如果您在另一个 didreceive 推送中处理过任何事情,它也会在那里复制每个推送通知。
我正在写这个解决方案,也许它可以帮助某些人或节省他的时间。
谢谢你。
当我的应用不是 运行 时,我可以通过什么方式下载所有通知。我的有效载荷已经有关键内容可用:1。但是我能够获取用户正在点击的数据。有什么方法可以计算当我的应用程序处于非活动状态时收到的通知数量并设置徽章编号。
您需要在项目目标功能中打开推送通知,然后像这样制作您的负载:
{
"data": {
"content-available": "1",
"badge":"0",
"sound":""
},
"where": {"test":"something_test"}
}
将徽章添加到 0 会清除所有远程推送通知,您可以阅读更多有关静默推送的信息Here
我找到了一种可以在应用程序被终止时下载推送通知的方法。但是徽章计数器,但是在应用程序被杀死时是不可能设置的。只能在您的应用程序中放置一个侦听器扩展,这会将您的应用程序从非活动状态调用到后台并下载所有内容。或者你可以通过服务器设置徽章,但那时你也必须在服务器上维护徽章。下面是当你的应用程序被杀死时下载所有推送的代码。
每当应用程序被杀死时,所有通知都会进入通知中心,并且有两个可以打开您的应用程序,i) 通过点击设备的任何推送通知中心 ii) 通过点击应用程序图标。 无论您选择以何种方式打开应用程序,您都可以编写以下代码以在您的应用程序处于非活动模式时下载所有推送。 在
didFinishLaunchingWithOptions
[[UNUserNotificationCenter currentNotificationCenter] getDeliveredNotificationsWithCompletionHandler:^(NSArray * _Nonnull notifications) { 如果(notifications.count > 0){ 音频服务播放系统声音(1315); for (UNNotification* notification in withNotifications) { //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]removeAllDeliveredNotifications]; } }];
同样重要的部分是在您下载后删除并在您再次打开应用程序时保存其他内容,如果您在另一个 didreceive 推送中处理过任何事情,它也会在那里复制每个推送通知。
我正在写这个解决方案,也许它可以帮助某些人或节省他的时间。 谢谢你。