Enviar notificações locais enquanto o aplicativo estiver sendo executado em segundo plano Swift 2.0
Estou tentando enviar ao usuário um alerta 'Push Notification style' quando o usuário minimiza o aplicativo (clicando no botão Início do iPhone ou bloqueando o telefone também).
Meu aplicativo analisa continuamente um arquivo XML (a cada 10 segundos) e desejo que o aplicativo continue em execução, para que ele envie ao Usuário uma Notificação Local assim que alguma condição for atendida no meu programa, mesmo depois que o usuário minimizou o aplicativo ou bloqueou seu telefone.
Passei pelos tutoriais e todo mundo parece 'agendar' uma Notificação, mas isso não vai funcionar para mim porque minha Notificação não é baseada em tempo, mas com base nas condições que estão sendo atendidas.
O que eu fiz até agora:
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil))
return true
}
MapViewController.swift
// Some function
func someFunction(delta: Int) {
if delta < 100 {
// Send alert to user if app is open
let alertView = UIAlertController(title: "This is an Alert!", message: "", preferredStyle: UIAlertControllerStyle.Alert)
alertView.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alertView, animated: true, completion: nil)
// Send user a local notification if they have the app running in the bg
pushTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("pushNotification"), userInfo: nil, repeats: false)
}
}
// Send user a local notification if they have the app running in the bg
func pushNotification() {
let notification = UILocalNotification()
notification.alertAction = "Go back to App"
notification.alertBody = "This is a Notification!"
notification.fireDate = NSDate(timeIntervalSinceNow: 1)
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
O alerta funciona muito bem enquanto o aplicativo está aberto, mas a notificação nunca aparece quando eu minimizo o aplicativo no meu telefone. Presumo que o aplicativo não esteja sendo executado enquanto estiver em segundo plano ou não entendo esse conceito tão bem. Qualquer ajuda é muito apreciada.