当前位置: 首页 > 面试题库 >

3天之内的用户通知,然后每天/每小时重复一次-iOS 10

公孙森
2023-03-14
问题内容

UILocalNotification已弃用,因此我想将代码更新为UserNotification框架:

let alertDays = 3.0
let alertSeconds = alertDays * 24.0 * 60.0 * 60.0

let localNotification:UILocalNotification = UILocalNotification()

localNotification.alertAction = "Reminder"
localNotification.alertTitle = "Reminder Title"
localNotification.alertBody = "Reminder Message"
localNotification.fireDate = Foundation.Date(timeIntervalSinceNow: alertSeconds)
localNotification.repeatInterval = .day            
UIApplication.shared().scheduleLocalNotification(localNotification)

等待初始通知后,如何通过UserNotification框架设置类似的每日或每小时重复?

let alertDays = 3.0
let alertSeconds = alertDays * 24.0 * 60.0 * 60.0

let content: UNMutableNotificationContent = UNMutableNotificationContent()

content.title = "Reminder Title"
content.subtitle = "Reminder Subtitle"
content.body = "Reminder Message"

let calendar = Calendar.current

let alarmTime = Foundation.Date(timeIntervalSinceNow: alertSeconds)
let alarmTimeComponents = calendar.components([.day, .hour, .minute], from: alarmTime)

let trigger = UNCalendarNotificationTrigger(dateMatching: alarmTimeComponents, repeats: true)

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

UNUserNotificationCenter.current().add(request)
    {
        (error) in // ...
    }

问题答案:

似乎不支持此操作,但可以使用以下解决方法:

let alertDays = 3.0
let daySeconds = 86400
let alertSeconds = alertDays * daySeconds

let content: UNMutableNotificationContent = UNMutableNotificationContent()

content.title = "Reminder Title"
content.subtitle = "Reminder Subtitle"
content.body = "Reminder Message"

let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: (alertSeconds), repeats: false)

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

UNUserNotificationCenter.current().add(request)
{
    (error) in // ...
}

与didReceive(_:withContentHandler
:)
结合使用,您可以使用:

let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: (daySeconds), repeats: false)

我知道这不是最佳方法,但它应该在不使用不推荐使用的类/方法的情况下工作。您使用重复:false,因为您在用户收到通知之前拦截通知并创建新通知。此外,如果您处理多个通知,则可以将其与UNNotificationAction和UNNotificationCategory结合使用。



 类似资料:
  • 考虑 我想计算一个尾随5天的总和,每3天。 我期待着像这样的东西 来自评论 我想要一个解决方案,泛化处理一个指定频率的回顾,并抓住任何属于该回顾。 对于上面的示例,回溯是,可能有4或50个观察结果属于回溯范围。

  • 我想创建一个闹钟,它会在预定义的时间每天响。我是否需要为每小时创建一个PendingIntent并将其添加到AlarmManager中,或者是否有更简单的方法来实现这一点?

  • 问题内容: 我是iOS开发的新手,但是已经创建了该应用程序,并且我试图在设定的时间创建每日通知。当前,通知针对给定的日期/时间执行一次。我不确定如何使用repeatInterval方法每天进行调度。每天重复通知的最佳方法是什么?任何帮助将不胜感激(是)。 问题答案: 您必须提供NSCalendarUnit值(例如“ HourCalendarUnit”或“ DayCalendarUnit”)以重复通

  • 我现在有每天重复的通知,每天下午6点重复。我想做的是不是6pm,而是在事件即将开始时显示通知。我有一个events arraylist,它包含日期和时间,这是可能的。下面是我当前显示通知的方式。 这是我主要的activity 这是在我的broadcast_reciever课上 公共类AlarmReceiver扩展了 我不确定如何设置时间,所以它会重复什么时候和如果有一个事件。感谢您的任何指点和帮助

  • 问题内容: 我正在使用WOW.js和animate.css,现在我正在将CSS运行到Infinite。我想知道如何让我的课程在3秒钟内停止运行并再次开始无限运行? 我的html: 我的CSS类: 解决方案可以是JS或CSS3。 问题答案: 对于纯CSS3动画,在动画的每个单次迭代之间添加延迟的一种方法是修改关键帧设置,以使其产生所需的延迟。 在以下代码段中,正在执行以下操作: 动画的整个持续时间为

  • 我使用taskscheduleR来运行我的R代码。我必须运行一次的那个运行得很好,但是其他的(每小时、每周、每天等等)都不行。)工作,尽管其余报告“成功:已成功创建计划任务“test2” 这是我用来运行一次的代码(工作正常): 这是我用来运行WEEKLY的代码(不起作用): 在这种情况下没有生成日志,看起来任务从未计划过。 类似于每小时(不起作用):库(taskscheduleR)myscript