Lokale Benachrichtigungen, während die App im hintergrund ausgeführt wird, Swift 2.0
Ich bin versucht, senden Sie dem Benutzer eine 'Push Notification' - Stil Alarm, wenn der Benutzer minimiert sich die app, indem Sie auf die iPhone Home-Taste oder durch sperren des Telefons).
Meine app kontinuierlich analysiert eine XML-Datei (alle 10 Sekunden), und ich will die app weiterhin ausgeführt, so dass es sendet der Benutzer eine Lokale Benachrichtigung, sobald eine bestimmte Bedingung erfüllt worden ist in meinem Programm, auch nachdem der Benutzer minimiert die app gesperrt oder Ihrem Handy.
Habe ich hüpfte herum von tutorials und jeder scheint zu 'planen' eine Benachrichtigung, aber das ist nicht zur Arbeit zu gehen für mich, weil meine Benachrichtigung ist nicht Zeit -, sondern auf der Grundlage von Bedingungen erfüllt werden.
Was ich bisher getan habe:
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 großen Werke, während die app geöffnet ist, aber die Meldung nie angezeigt, wenn ich minimieren die app auf meinem Handy. Ich nehme an, die app nicht läuft, während es im hintergrund oder ich don ' T verstehen dieses Konzept gut. Jede Hilfe wird sehr geschätzt.
delta ist innen "someFunction" ich wollte nur nicht den gesamten code (versucht zu halten, relevanten teilen). Ich habe bearbeitet den code, so dass er ein bisschen mehr lesbar. Die Sachen, die innerhalb der 'if' - Anweisung ausgeführt wird, ich habe geprüft, die mit 'print()' Anweisungen.
Schreiben Sie print-Anweisung in pushNotification-Funktion und sehen, ob es wird als in bg.
Ok, pushNotification() wird immer aufgerufen und funktioniert, wenn ich minimieren meine app im simulator, aber wenn ich laden Sie die app auf mein Handy und minimieren der app, habe ich nicht bekommen, die Warnungen, wie ich in den simulator.
Hast du die Erlaubnis popup?
InformationsquelleAutor Ivan | 2016-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig NSTimer funktioniert nur im simulator. Versuchen Sie, fügen Sie diese zu Ihrem AppDelegate Datei:
Nie Verstand. Ich habe es funktioniert durch das hinzufügen von Benachrichtigung.soundName = UILocalNotificationDefaultSoundName in meinem pushNotification () - Funktion. Danke für Eure Hilfe!
Haben Sie fügen Sie diese an Ihre Mitteilung? - Benachrichtigung.soundName = UILocalNotificationDefaultSoundName
Ja, habe ich, der Benachrichtigung sound funktioniert jetzt. Danke.
Nach unzähligen Stunden des Suchens und tutorials, die "beingbackgroundtaskwithname" gearbeitet. Danke für diese Antwort
InformationsquelleAutor nadi9