[SWIFT 3] Timer et background

InsouInsou Membre

Hello,


 


Je rencontre un petit soucis..


 


J'ai créer un timer globale pour mon application



var leTimer : Timer?

Lorsque j'arrive sur ma page principale, si mon timer est activé dans ma configuration, je le lance : 



var laValeurTracking = false

let defaults = UserDefaults.standard
if let laValeurTrackingTMP = defaults.value(forKey: "Alerte_Tracking"){
laValeurTracking = laValeurTrackingTMP as! Bool
}

if(laValeurTracking){
print("ME GEOLOCALISER")
leTimer?.invalidate()
leTimer = Timer.scheduledTimer(withTimeInterval: 3, repeats: true){ _ in
print("Envoyer ma position au serveur !")
}
}
else{
print("Timer STOP")
leTimer?.invalidate()
}


Le soucis vient quand l'application passe en background, j'aimerai que mon timer continue..


Dans mon projet, j'ai activé dans "Capabilities >> Background Modes >> Background fetch et Location updates" mais ça ne change rien..


 


Comment faire pour garder mon timer actif lorsque l'application passe en background ? :/


Mots clés:

Réponses

  • FKDEVFKDEV Membre
    mars 2017 modifié #2
    J'ai regardé sur stackoverflow et la situation n'est pas clair en ce qui concerne NSTimer en background.

    Si tu veux un update de location toutes les N secondes, essaye cette librairie:

    https://github.com/paleksandrs/APScheduledLocationManager
  • FKDEVFKDEV Membre
    mars 2017 modifié #3
    -
  • InsouInsou Membre

    J'viens de faire un test et ça à  l'air de fonctionner comme il faut..


     


    Merci ^^


  • FKDEVFKDEV Membre
    Maintenant tu n'as plus qu'à  lire le code de la librairie pour comprendre la différence avec ce que tu faisais.

    La librairie est relativement petite, en fait il y a un seul fichier utile.
    C'est un exercice qui a plusieurs avantages :
    -s'entrainer à  lire le code des autres,
    -comprendre pourquoi le timer fonctionne dans son cas et pas le tien.

    Souvent, ce genre de librairie, je ne les intègre pas, je les ouvre, je repère le coeur, je le prend et je l'intègre dans mon propre code. Parfois, cela donne un code moins élégant mais aussi moins compliqué et plus personnel.
  • InsouInsou Membre
    mars 2017 modifié #6

    Je reviens dessus car j'ai un petit bug..


     


    Ok j'ai rien dit, tout fonctionne ^^


Connectez-vous ou Inscrivez-vous pour répondre.