Sto tentando di inviare all'utente un avviso di tipo "Push Notification" quando l'utente riduce a icona l'app (facendo clic sul pulsante Home dell'iPhone o bloccando anche il telefono).Invia notifiche locali mentre l'app è in esecuzione in background Swift 2.0
La mia app analizza continuamente un file XML (ogni 10 secondi) e voglio che l'app continui a funzionare in modo che invii all'utente una notifica locale una volta che alcune condizioni sono state soddisfatte nel mio programma, anche dopo che l'utente ha ridotto al minimo il app o bloccato il telefono.
Sono rimbalzato dai tutorial e tutti sembrano "pianificare" una notifica, ma questo non funzionerà per me perché la mia notifica non è basata sul tempo, piuttosto si basa sulle condizioni che vengono soddisfatte.
Quello che ho fatto finora:
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)
}
Alert funziona alla grande, mentre l'applicazione è aperta, ma la notifica non viene mai visualizzata quando minimizzo l'app sul mio telefono. Presumo che l'app non sia in esecuzione mentre è in background o non capisco bene questo concetto. Qualsiasi aiuto è molto apprezzato.
Che cos'è questo delta? Immagino che la tua funzione non venga chiamata in background e quindi la tua notifica dint venga pianificata – Muneeba
@Muneeba delta si trova all'interno di "someFunction" Non ho incluso l'intero codice (cercando di conservare i pezzi rilevanti). Ho modificato il codice in modo che sia un po 'più leggibile. Le cose all'interno dell'istruzione 'if' sono in esecuzione, ho verificato con le istruzioni 'print()'. – Ivan
Scrivi la dichiarazione di stampa nella funzione pushNotification e controlla se viene richiamata in bg. – Muneeba