swift2 在Swift 2中为特定时间安排本地通知

gopyfrb3  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(192)

我已经在这些论坛和其他网站,我不断得到一个不合理的答案。本质上,我想创建一个通知,火灾,例如,每个工作日的6:28上午,12:28下午,和5:28下午。
我有一个解决方案的片段,但我真的不知道该去哪里。我的设置是否正确?任何帮助都是感激不尽的。

let notification: UILocalNotification = UILocalNotification()
notification.category = "News and Sports"
notification.alertAction = "get caught up with the world"
notification.alertBody = "LIVE news and sports on VIC in just a minute!"
UIApplication.sharedApplication().scheduleLocalNotification(notification)
o4tp2gmn

o4tp2gmn1#

准备显示本地通知需要两个主要步骤:

步骤1

在iOS 8+上,您的应用必须请求并随后获得用户授予的权限才能显示本地通知。请求权限可在您的AppDelegate中按如下方式完成。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    ...
    if #available(iOS 8, *) {
        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil))
    }

    return true
}

**当您的应用在iOS 8之前的操作系统上运行时,请勿调用registerUserNotificationSettings(_:)。否则,您的应用将在运行时崩溃。**幸运的是,这应该不是问题,因为您使用的是Swift 2。

步骤2

将您的通知安排在未来的某个时间。

let notification:UILocalNotification = UILocalNotification()
...
... // set the notification's category, alertAction, alertBody, etc.
...
notification.fireDate = ... // set to a future date
UIApplication.sharedApplication().scheduleLocalNotification(notification)

不幸的是,根据@progrmr的this Stack Overflow answer
无法使用UILocalNotification设置自定义重复间隔.以前曾询问过此问题(请参阅下文),但只提供了有限得选项. repeatInterval参数是枚举类型,它仅限于特定值.
您不能将这些枚举相乘并获取这些间隔的倍数。您的应用中设置的本地通知不能超过64个。一旦通知触发,您就不能重新计划通知,除非用户选择在通知触发时运行您的应用(他们可能不会运行通知)。
有一个重复间隔乘数posted here的请求。你可以添加评论。我建议提交一个错误报告或功能请求(url?)与苹果。
许多其他的Stack Overflow答案都证实了上面引用的说法。请访问完整引用答案的链接,其中包含支持答案的列表。
对于您的情况,一个可能的解决方法是安排3个本地通知。将每个通知分别设置为在6:28 AM、12:28 PM和5:28 PM触发。然后,将所有3个本地通知的repeatInterval设置为.CalendarUnitWeekday

相关问题