Envoyer des Notifications Locales tandis que l'Application est en cours d'exécution en arrière-plan Swift 2.0
Je suis en train d'envoyer à l'utilisateur un " Push Notification de style Alerte lorsque l'utilisateur minimise l'application (en cliquant sur le Bouton Home de l'iPhone ou par le verrouillage du téléphone).
Mon application en continu analyse d'un fichier XML (toutes les 10 secondes) et je veux que l'application de fonctionner de sorte qu'il envoie à l'utilisateur Local de Notification une fois qu'une condition a été remplie dans mon programme, même après que l'utilisateur a minimisé l'application ou verrouillé leur téléphone.
J'ai rebondi à partir de tutoriels et tout le monde semble "annexe" de l'avis, mais ce n'est pas d'aller travailler pour moi, parce que ma Notification n'est pas basée sur le temps, c'est plutôt en fonction des conditions rencontrées.
Ce que j'ai fait jusqu'à présent:
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)
}
L'Alerte fonctionne très bien, tandis que l'application est ouverte, mais la notification ne montre jamais quand je réduire l'application sur mon téléphone. Je suppose que l'application n'est pas en cours d'exécution alors que c'est dans l'arrière-plan ou je ne comprends pas ce concept. Toute aide est grandement appréciée.
delta est à l'intérieur "someFunction" je juste ne comprennent pas l'ensemble du code (en essayant de garder les éléments pertinents). J'ai modifié le code afin qu'il soit un peu plus lisible. Les trucs à l'intérieur du if est exécuté, j'ai vérifié avec "print ()" que les états.
Écrire instruction print dans pushNotification fonction et voir si elle est appelée dans les bg.
Ok, pushNotification() est appelé et fonctionne quand je réduire mon application dans le simulateur, mais quand j'ai télécharger l'application sur mon téléphone et réduire l'application, je ne reçois pas les alertes comme je le fais dans le simulateur.
Avez-vous la permission de popup?
OriginalL'auteur Ivan | 2016-01-26
Vous devez vous connecter pour publier un commentaire.
Par défaut NSTimer ne fonctionnent que dans un simulateur. Essayez d'ajouter à votre AppDelegate fichier:
Jamais l'esprit. J'ai eu de travail par l'ajout de notification.soundName = UILocalNotificationDefaultSoundName dans mon pushNotification() fonction. Merci pour votre aide!
Avez-vous l'ajouter à votre avis? la notification.soundName = UILocalNotificationDefaultSoundName
Oui je l'ai fait, le son de notification fonctionne maintenant. Je vous remercie.
Après d'innombrables heures de recherche et de tutoriels, de la "beingbackgroundtaskwithname" travaillé. Merci pour cette réponse
OriginalL'auteur nadi9