4

我正在开发一个警报应用程序项目(单击获取 GitHub 链接),此代码运行良好,但问题是当时通知限制为大约 64 个,因此在用户响应通知之前我无法发送继续通知。我读了一些苹果将本地通知限制为仅 64 的内容,但我在苹果商店中看到了许多应用程序,这些应用程序不断发送通知,这里很少有来自苹果商店的链接。

https://itunes.apple.com/us/app/red-clock-free-edition-the-minimal-alarm-clock/id567374573?mt=8 https://itunes.apple.com/us/app/alarmy -闹钟/id1163786766?mt=8

任何人都可以帮助了解此应用程序如何能够连续发送,我尝试这些应用程序正在发送通知,直到用户响应该应用程序(我检查了超过 1 小时)。下面是设置单个通知的代码。

    let comingSunday =  findNext("Sunday", afterDate: fireDate.adding(minutes: item))
    let triggerDate = Calendar.current.dateComponents([ .year, .month, .weekday, .hour, .minute, .second], from: comingSunday!)
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: alarm.repeatAlarm)

    let request = UNNotificationRequest(identifier: "\(alarm.uuid)0\(item)", content: notificationContent, trigger: trigger)
    UNUserNotificationCenter.current().add(request) { (error) in
                         if let error = error {
                           print("Unable to add notification request, \(error.localizedDescription)")
                         }
    }

持续通知的警报应用视频

请从 App Store 安装并运行应用程序,并在发布答案之前注意通知在上述应用程序中的工作方式

4

3 回答 3

3

您可以将有关所有通知的信息存储在本地数据库中。

例如,如果您有超过 64 条通知,您可以通过 UNUserNotificationCenter 发布 64 条通知,其他通知保存到本地数据库。

如果一个本地通知已完成(已显示),您可以从本地数据库获取有关第一个通知的信息并安排它(您也可以从本地数据库中删除它,或添加指定键(例如 isScheduled))。

您可以在委托方法中处理此操作:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Swift.Void)
于 2018-04-02T13:12:05.023 回答
0

可能是微不足道的,但如果您只是需要多次通知,我通常使用:

UNTimeIntervalNotificationTrigger(timeInterval:60.0, 重复:true)

因此,您可以添加一个重要的,它可以与您的其他(真实)通知共存。用户点击后,您可以将其杀死。

于 2018-04-08T06:22:03.383 回答
0
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Swift.Void)

Delegate 仅在应用程序运行时工作

于 2020-03-21T14:34:49.497 回答