ios – 如何检测可操作通知的触发日期

前端之家收集整理的这篇文章主要介绍了ios – 如何检测可操作通知的触发日期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序中有提醒.我每天都会重复通知.现在可以在我的通知中心看到多个通知.由于它是可操作的通知,用户可以点击“是”或“否”.

我听了它如下:

import Foundation
import UserNotifications
import UserNotificationsUI


class NotificationSetup: NSObject,UNUserNotificationCenterDelegate
{

    let requestIdentifier = "SampleRequest"
    let salahTimeArr =
        [

            [ "salahName": "Fajar","time" : DateComponents.init( hour: 7,minute: 0 )],[ "salahName": "Zuhar","time" : DateComponents.init( hour: 14,[ "salahName": "Asar","time" : DateComponents.init( hour: 18,[ "salahName": "Maghrib","time" : DateComponents.init( hour: 19,minute: 30 )],[ "salahName": "Isha","time" : DateComponents.init( hour: 22,minute: 0 ) ]

    ]

    //============================================================

    func createNotificationCategory()
    {
        let center = UNUserNotificationCenter.current()

        center.requestAuthorization(options: [.alert,.sound])
        {
            (granted,error) in

            let actionYes = UNNotificationAction(identifier: "yes",title: "Yes",options: [])

            let actionNo = UNNotificationAction(identifier: "no",title: "No",options: [])

            let category = UNNotificationCategory(identifier: "SalahOfferedActionableNotification",actions: [actionYes,actionNo],intentIdentifiers: [],options: [])

            UNUserNotificationCenter.current().setNotificationCategories([category])

        }

    }


    //----------------------------------

    func setNotifications()
    {

        self.createNotificationCategory()


        if ( UserDefaults.standard.bool(forKey: "isNotificationSet") == false )
        {

            for salahDict in salahTimeArr
            {

                print(salahDict["salahName"])

                let content = UNMutableNotificationContent()
                content.title = "Did you offer"
                content.subtitle = salahDict["salahName"] as! String
                content.body = "Its Fard!"
                content.sound = UNNotificationSound.default()
                content.categoryIdentifier = "SalahOfferedActionableNotification"

                //------------------------

                let date = salahDict["time"] as! DateComponents

                let trigger = UNCalendarNotificationTrigger.init(dateMatching: date,repeats: true)


                let request = UNNotificationRequest(identifier: requestIdentifier,content: content,trigger: trigger)

                //------------------------

                let notificationSingletonObj = UNUserNotificationCenter.current()
                notificationSingletonObj.delegate = self

                //------------------------

                notificationSingletonObj.add(request)
                {
                    (error) in

                    if (error != nil)
                    {
                        print(error?.localizedDescription)
                    }
                }
            }
            UserDefaults.standard.set( true,forKey: "isNotificationSet" )
        }
    }

    //============================================================

    func userNotificationCenter(_ center: UNUserNotificationCenter,didReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaping () -> Void)
    {
        let salahName = response.notification.request.content.subtitle
        let date = response.notification.date

        if response.actionIdentifier == "yes"
        {
            print("User tapped 'Yes' button on notification for Salah: \(salahName)")

            UserDefaults.standard.set( true,forKey: salahName )

            Calculation().addSalah(forSalah : salahName,offered: 1 )

            userDefaults.set( Date(),forKey: "dataCapturedForDate")
        }

    }


}

我想阅读通知日期(触发日期).我找到了以下

let date = response.notification.date

但正如苹果文档所说,它支持iOS 10&后来.但我希望支持到iOS7.

enter image description here

请参考通知中心图像清楚地理解.
我有相同的标题,描述和所有通知信息类似.我想检测用户点击的通知.天气是星期一的通知或星期二的通知.天气是“A”或“B”

enter image description here

解决方法

UILocalNotification有fireDate属性.你可以使用它.另外,为了支持iOS7,您需要使用UILocalNotification而不是UNUserNotificationCenterDelegate

发起本地通知

let localNotification = UILocalNotification()
let fireDate = Date()
localNotification.fireDate = fireDate
localNotification.alertBody = "Your alert message"
localNotification.repeatInterval = .day
UIApplication.shared.scheduleLocalNotification(localNotification)

在您的应用代表中

func application(_ application: UIApplication,didReceive notification: UILocalNotification) {
  notification.fireDate
}

猜你在找的iOS相关文章