0
我使用backgroundTaskIdentifier使秒錶在應用程序關閉時繼續。計數器在應用程序關閉時更新正常。backgroundTaskIdentifier - 當應用程序關閉時,UIAlert不會彈出
但我希望在應用程序關閉時收到彈出式警報通知。現在它在我打開應用程序時彈出,但這對我沒有幫助,因爲定時器已經停止。
相關問題。如果服務器上沒有任何內容被推送,應用程序是否可以推送通知?我的意思是,當計時器完成後,我可以爲我的應用程序添加徽章嗎
變量聲明
var backgroundTaskIdentifier: UIBackgroundTaskIdentifier?
viewDidLoad中
NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateTimerBasedViews", name: Timer.notificationSecondTick, object: timer)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "timerComplete", name: Timer.notificationComplete, object: timer)
backgroundTaskIdentifier = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({
UIApplication.sharedApplication().endBackgroundTask(self.backgroundTaskIdentifier!)
})
適用功能
func updateTimerBasedViews() {
updateTimerLabel()
updateProgressView()
}
func timerComplete() {
switchToPickerView()
playAlarm()
// TO DO : ADD UIAlert
let alert = UIAlertController(title: title, message: "Time to do it!", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
//self.presentViewController(alert, animated: true, completion: nil) // old
presentViewController(alert, animated: true) {() -> Void in
let localNotification:UILocalNotification = UILocalNotification()
localNotification.alertAction = "Testing"
localNotification.alertBody = "Hello World!"
localNotification.fireDate = NSDate(timeIntervalSinceNow: 5)
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
}
的AppDelegate
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil))
謝謝。我會標記爲正確的。你越來越接近1000 :)我剛剛意識到我需要區分應用程序,本地和推送通知。這會給我一個紅色的徽章和一個警報彈出,即使應用程序關閉了嗎?我可以把它放在上面的同一個函數中嗎?我認爲很多人把這段代碼放在AppDelegate中?我也應該選擇操作系統還是應用程序彈出?兩者都不好對嗎?如果應用程序已打開,則無法通過本地通知。 – TokyoToo
我想,你應該試試這個,我的意思是,據我所知你想在後臺任務完成後發送本地通知。也許你應該在後臺任務中調用'registerUserNotificationSettings'。但它看起來像正確的方式來解決你的問題 – katleta3000
把這個代碼'application.registerUserNotificationSettings'在didFinishLaunching和其他代碼在你後臺任務完成處理程序 – katleta3000