在发送通知触发之前完成通知请求

Posted

技术标签:

【中文标题】在发送通知触发之前完成通知请求【英文标题】:Getting Notification Request to complete before Send Notification fires 【发布时间】:2021-04-21 14:57:18 【问题描述】:

我一直在尝试实现一个本地通知实例,但运气不佳。它似乎试图在请求关闭完成之前安排通知,因此永远不会正确安排。

我为请求和发送构造了以下两种方法:

func requestNotificationAuthorization(myDate: Date) 
       let authOptions = UNAuthorizationOptions.init(arrayLiteral: .alert, .badge, .sound)
       self.userNotificationCenter.requestAuthorization(options: authOptions)  (success, error) in
         if let error = error 
            print(error.localizedDescription)
         
       
   
   
   
   func sendNotification(myDate: Date) 
      let content = UNMutableNotificationContent()
      content.title = "My Title"
      content.body = "Placeholder for data from Firebase"
      content.sound = .default
      
      let triggerDaily = Calendar.current.dateComponents([.hour, .minute], from: myDate)
      let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDaily, repeats: true)
      let identifier = "LocalNotification"
      let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)

      userNotificationCenter.add(request, withCompletionHandler:  (error) in
           if let error = error 
               print("Error")
           
       )
   

以下是对这些方法的调用:

         let newDate = formatter.date(from: myDate)
         self.requestNotificationAuthorization(myDate: newDate!)


         self.sendNotification(myDate: newDate!)

在确定 requestNotification 已成功完成之前,我不确定如何推迟 sendNotification 调用。如果有人愿意为此提供一些有用的帮助,我将不胜感激。

【问题讨论】:

基本asynchrone 概念。在当你在 requestAuthorization(options:) 闭包中执行 if let error = error 时,如果被授予,则调用 sendTheNotification 谢谢 Larme 我以为我已经尝试过了,但我第一次没有或没有正确。我现在很好。 【参考方案1】:

Larme 是对的,如果有人知道如何将我的话归功于他,那么在这里我将不胜感激。

【讨论】:

以上是关于在发送通知触发之前完成通知请求的主要内容,如果未能解决你的问题,请参考以下文章

AlarmManager 在请求时未触发

使用 Firebase 云消息传递,还是让应用通过 API 请求事件和触发通知?

Android pushwoosh:从通知(带触发器)启动应用程序时,如何避免显示“使用完成操作”对话框

重新安排用户通知(本地)?

在为其设置的时间之前触发所有待处理的通知

Matlab 异步执行