iOS:收到UserNotification后执行某些操作?

时间:2017-06-01 11:33:02

标签: ios notifications nsnotificationcenter nsusernotification

每次将UserNotification消息发送给用户时是否可以执行某些操作?

 let tdate = Date(timeIntervalSinceNow: 10)
    let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: tdate)
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: true)

    let identifier = "hk.edu.polyu.addiction.test"
    let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)

    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    UNUserNotificationCenter.current().add(request, withCompletionHandler: { (error) in
      if error != nil {
        debugPrint("center.add(request, withCompletionHandler: { (error)")
      } else {
        debugPrint("no error?! at request added place")
      }
    })

这是我在用户按下按钮时发出通知的代码。 (即,在10秒之后,通知出现在用户身上。)

即使用户没有按下通知,我也希望更新应用程序的某个变量(假设应用程序位于后台)。

可能的?

或者,只要此通知完成。根据我的应用程序中的一些计算,可能会安排另一个新通知吗? (不固定时间,不能使用重复)

1 个答案:

答案 0 :(得分:0)

是的,有可能!需要修改功能:

  1. 在后台模式下启用后台提取。
  2. 在后台模式下启用远程通知。
  3. 实施委托方法:application:didReceiveRemoteNotification:fetchCompletionHandler:
  4. 当通知到达手机时会调用此委托方法,因此您可以刷新数据。
  5. 当用户点击通知委托方法时:didReceiveRemoteNotification 调用并打开应用程序,用户将在应用程序中获取最新数据。
  6. Apple API参考:

      

    如果未正确配置有效负载,通知可能是   显示给用户而不是传递到您的应用程序   背景。在您的有效负载中,请确保满足以下条件   真:

         

    有效负载的aps字典必须包含内容可用密钥   值为1.有效负载的aps字典不得包含   警报,声音或徽章键。发送静默通知时   对于用户的设备,iOS会在后台唤醒您的应用程序   让它最多运行30秒。