Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中的随机重复本地通知_Swift_Notifications_Apple Push Notifications_Unusernotificationcenter_Unnotificationtrigger - Fatal编程技术网

Swift中的随机重复本地通知

Swift中的随机重复本地通知,swift,notifications,apple-push-notifications,unusernotificationcenter,unnotificationtrigger,Swift,Notifications,Apple Push Notifications,Unusernotificationcenter,Unnotificationtrigger,TL;DR:是否可以在不使用APNS(或其他推送通知服务)的情况下进行重复、随机的本地通知 我正在构建一个包含大量对象的核心数据应用程序。(我们称之为widget。)每天在某个特定的时间,比如说中午,我想发送一个通知来查看其中一个widget 在didfishlaunchingwithoptions中,我检查以确保已启用通知,并设置委托等,然后调用函数以生成本地通知。所有这些都很好地发挥了作用 var date = DateComponents() date.hour = 12

TL;DR:是否可以在不使用APNS(或其他推送通知服务)的情况下进行重复、随机的本地通知

我正在构建一个包含大量对象的
核心数据
应用程序。(我们称之为widget。)每天在某个特定的时间,比如说中午,我想发送一个通知来查看其中一个widget

didfishlaunchingwithoptions
中,我检查以确保已启用通知,并设置委托等,然后调用函数以生成本地通知。所有这些都很好地发挥了作用

    var date = DateComponents()
    date.hour = 12
    date.minute = 00
    let content = UNMutableNotificationContent()
    content.title = "You should see this widget!"
    content.userInfo = ["widgetID": widget.id]
    content.body = "Today's Widget:\n\(widget.title!)"
    content.sound = UNNotificationSound.default()
    let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
    let request = UNNotificationRequest(identifier: notificationIdentifer, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request, withCompletionHandler: { (error : Error?) in if let theError = error { print(theError.localizedDescription)}}
我也让代理的处理程序正常工作:

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) { ... a bunch of stuff to happen ... }
现在,在该功能中,如果用户以任何明确的方式与通知交互,我可以将
UNMutableNotificationContent
重置为一个新的随机小部件。 问题是,如果用户根本不与通知交互——请参阅苹果文档中的“处理标准系统操作”部分——我无法“重置”通知,所以明天他们只会再次收到同一个小部件的建议,这很烦人

我对使用APNS(或替代品)并不感兴趣,因为我觉得我不需要这样做,也不想处理所有需要的额外内容,但我似乎找不到替代品

请注意,此问题不是以下问题的重复:


您可以在第一次和每次用户与弹出窗口交互时只安排一次本地通知,而不是安排本地通知重复自身。@AndreaMugnaini,对。正如我所解释的,这就是我现在正在做的。问题是,如果用户忽略或滑动以取消警报,他们只会在第二天收到相同的警报。@Andreamugnani我希望通知每天重复;但是我也希望小部件中包含的内容每天都有所不同。嘿@Simon:不,我从来没有真正得到过答案。但我意识到,如果用户根本不与通知进行交互,那么在我的使用案例中,第二天通知是相同的这一事实并不重要。@DavidVincentGagne感谢您的回答。在您发表评论之后的这段时间里,我实际上也在这段时间内完成了我的文章。再次感谢!