启动24小时计时器,在24小时结束时通知用户

时间:2016-11-29 15:05:49

标签: ios swift database core-data nstimer

我不知道在哪里看,或者我需要创建一个系统。用户可以在我的应用中执行对象操作。当用户对对象执行该操作时,将为该对象启动24小时倒计时。自对对象执行操作后24小时内应通知用户。这是我需要的NSTimer吗?我不这么认为,因为即使用户关闭应用程序或注销应用程序或用户导航远离启动计时器的视图控制器,计时器也应该运行。我确实认为它应该是在数据库中运行的东西。喜欢24倒计时状态还是什么?我不知道如何运行计时器。

我考虑过检查系统。就像对象在Core数据中有一个时间戳,在Web服务器中有一个数据库,每次用户在用户启动24小时倒计时后与对象交互时都会检查时间。但是,如果用户在另一个应用程序上,如果使用该系统24小时,将如何通知用户。

2 个答案:

答案 0 :(得分:1)

您描述的功能应该在服务器端。您无法确定您的应用是否会在24小时内启动并运行。你将如何"通知"用户因您想要达到的目标而异。我建议使用服务器端和Push Notifications来实现你想要的目标。

答案 1 :(得分:1)

您可以在应用中使用本地通知。

    //first you must register to get notification.
    let notificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
     UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)


     @IBAction func NotifyUser(sender: AnyObject) {
            let notify = UILocalNotification()
            notify.fireDate = NSDate(timeIntervalSinceNow: 24*60*60) as Date
            notify.alertBody = "Alert message body"
            notify.alertAction = "Alert message action"
            notify.soundName = UILocalNotificationDefaultSoundName
            notify.userInfo = ["Hello": "Hi"]
            UIApplication.sharedApplication.scheduleLocalNotification(notify)
            guard let settings = UIApplication.sharedApplication().currentUserNotificationSettings() else { return }

            if settings.types == .None {
            // here we have not permission to schedule notifications, or we haven't asked yet.
                return
            }
        }

希望它会对你有所帮助。