iOS推送通知横幅清除操作按钮

时间:2018-12-12 10:55:42

标签: ios swift unnotificationserviceextension

当用户从主屏幕清除通知时,我想做点什么,当用户点击推送通知横幅上的清除按钮时有可能触发,我最终在视图上添加了自定义按钮,但这不可行。

enter image description here

图像已附加,我希望在用户点击此清除操作时触发任何想法?

{
   “aps” : {
      “category” : “MEETING_INVITATION”
      “alert” : {
         “title” : “Weekly Staff Meeting”
         “body” : “Every Tuesday at 2pm”
      },
   },
   “MEETING_ID” : “123456789”,
   “USER_ID” : “ABCD1234”

} 

我已经做到了,但是它在视图上的添加按钮如弹出窗口

func userNotificationCenter(_ center: UNUserNotificationCenter,
       didReceive response: UNNotificationResponse,
       withCompletionHandler completionHandler: 
         @escaping () -> Void) {

   // Get the meeting ID from the original notification.
   let userInfo = response.notification.request.content.userInfo
   let meetingID = userInfo["MEETING_ID"] as! String
   let userID = userInfo["USER_ID"] as! String

   // Perform the task associated with the action.
   switch response.actionIdentifier {
   case "ACCEPT_ACTION":
      sharedMeetingManager.acceptMeeting(user: userID, 
                                    meetingID: meetingID)
      break

   case "DECLINE_ACTION":
      sharedMeetingManager.declineMeeting(user: userID, 
                                     meetingID: meetingID)
      break

   // Handle other actions…

   default:
      break
   }

   // Always call the completion handler when done.    
   completionHandler()
}

1 个答案:

答案 0 :(得分:1)

来自docsactionIdentifier

  

此参数可以包含一个UNNotificationAction对象的标识符,也可以包含系统定义的标识符。系统定义的标识符为 UNNotificationDefaultActionIdentifier UNNotificationDismissActionIdentifier ,它们表示用户打开了应用程序或取消了通知而没有任何进一步的操作。

因此,您不必使用自己的标识符,而不必使用系统的标识符。

代替

"ACCEPT_ACTION"

使用

UNNotificationDefaultActionIdentifier

而不是

"DECLINE_ACTION"

使用

UNNotificationDismissActionIdentifier