应用程序被杀死时,通知不显示与操作按钮 ios

Posted

技术标签:

【中文标题】应用程序被杀死时,通知不显示与操作按钮 ios【英文标题】:Notification not displayed with action buttons when app is killed ios 【发布时间】:2018-10-05 10:20:34 【问题描述】:

我已经完成了以下代码来显示操作按钮,同时通知使用一个信号。但是当应用程序被杀死时,通知不会到来。它在后台/前台模式下正常工作。但是,当应用程序不在托盘中时,甚至通知也会停止。没有操作按钮,它工作得很好。

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error)
 
     if( !error ) 
         [[UIApplication sharedApplication] registerForRemoteNotifications];

         NSLog( @"Push registration success." );

      else 
         NSLog( @"Push registration FAILED" );

];

UNNotificationCategory *modifyCategory = [UNNotificationCategory categoryWithIdentifier:CYLInviteCategoryIdentifier actions:@[] intentIdentifiers:@[] options:UNNotificationCategoryOptionNone];

UNNotificationAction* snoozeAction = [UNNotificationAction
                                          actionWithIdentifier:@"ACCEPT_ACTION"
                                          title:@"Accept"
                                          options:UNNotificationActionOptionForeground];

UNNotificationAction* stopAction = [UNNotificationAction
                                        actionWithIdentifier:@"DECLINE_ACTION"
                                        title:@"Decline"
                                        options:UNNotificationActionOptionDestructive];

UNNotificationCategory* actionCategory = [UNNotificationCategory
                                               categoryWithIdentifier:@"INCOMING_CALL"
                                               actions:@[snoozeAction, stopAction]
                                               intentIdentifiers:@[]
                                               options:UNNotificationCategoryOptionNone];

[center setNotificationCategories:[NSSet setWithObjects: modifyCategory, actionCategory,
                                       nil]];

【问题讨论】:

请查看我的回答***.com/questions/36929869/… 您需要在推送通知负载中添加 "content-available" :1 @balkaransingh 我已经在我的有效负载中设置了 content-available:1 。但是由于操作按钮,仍然没有通知。是否可以在应用终止模式下显示操作按钮? setNotificationCategories 之后的 registerForRemoteNotifications。那就试试 【参考方案1】:

有两种方法可以在推送通知中实现此操作处理。 1) 只需注册您当前正在使用的 UNUserNotificationCenter,但您会遇到操作按钮未在终止模式下显示的问题。

因此,请使用您共享的配置检查您的有效负载用户信息字典标识符和类别。

以下是我的代码,请检查此 Swift 代码。

private func setNotificationCategories() 

let likeAction = UNNotificationAction(identifier: "like", title: "Like", options: [])
let replyAction = UNNotificationAction(identifier: "reply", title: "Reply", options: [])
let archiveAction = UNNotificationAction(identifier: "archive", title: "Archive", options: [])
let  ccommentAction = UNTextInputNotificationAction(identifier: "comment", title: "Comment", options: [])


let localCat =  UNNotificationCategory(identifier: "category", actions: [likeAction], intentIdentifiers: [], options: [])

let customCat =  UNNotificationCategory(identifier: "recipe", actions: [likeAction,ccommentAction], intentIdentifiers: [], options: [])

let emailCat =  UNNotificationCategory(identifier: "email", actions: [replyAction, archiveAction], intentIdentifiers: [], options: [])

UNUserNotificationCenter.current().setNotificationCategories([localCat, 

customCat, emailCat])

我更新了你的代码,请检查一下

UNNotificationCategory *modifyCategory = [UNNotificationCategory categoryWithIdentifier:CYLInviteCategoryIdentifier actions:@[] intentIdentifiers:@[] options:UNNotificationCategoryOptionNone];

UNNotificationAction* snoozeAction = [UNNotificationAction
                                          actionWithIdentifier:@"ACCEPT_ACTION"
                                          title:@"Accept"
                                          options:[]];

UNNotificationAction* stopAction = [UNNotificationAction
                                        actionWithIdentifier:@"DECLINE_ACTION"
                                        title:@"Decline"
                                        options:[]];

UNNotificationCategory* actionCategory = [UNNotificationCategory
                                               categoryWithIdentifier:@"INCOMING_CALL"
                                               actions:@[snoozeAction, stopAction]
                                               intentIdentifiers:@[]
                                               options:[]];



[center setNotificationCategories:[NSSet setWithObjects: modifyCategory, actionCategory,
                                       nil]];

改变只是不设置选项。

2)使用通知扩展您可以设计有吸引力的推送通知。为此,我建议更喜欢这个博客ios Remote Push Notifications

【讨论】:

以上是关于应用程序被杀死时,通知不显示与操作按钮 ios的主要内容,如果未能解决你的问题,请参考以下文章

iOS应用程序被杀死时处理程序不能显示远程通知吗?

当应用程序被杀死时,在推送通知后执行操作:react-native,IOS

应用程序被杀死/关闭/未打开时的 IOS 推送通知操作

当应用程序处于状态后台或被杀死时,如何在不点击通知的情况下存储 iOS 远程通知?

IOS:应用内通知+通知服务+内容扩展

iOS React 在应用程序被杀死时推送通知