j'essaie de faire une application qui peut faire fonctionner une minuterie en arrière-plan.
voici mon code:
let taskManager = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(self.scheduleNotification), userInfo: nil, repeats: true)
RunLoop.main.add(taskManager, forMode: RunLoopMode.commonModes)
le code ci-dessus effectuera une fonction qui invoquera une notification locale . cela fonctionne lorsque l'application est au premier plan, comment puis-je le faire fonctionner en arrière-plan?
j'ai essayé de mettre plusieurs lignes d'impression et j'ai vu que, lorsque je réduis l'application (touche home), le chronomètre s'arrête, lorsque je retourne à l'application, elle reprend.
je voulais que la minuterie fonctionne toujours en arrière-plan. y a-t-il un moyen de le faire?
voici ce que je veux arriver:
lancer l'application -> attendre 10 secondes -> notification reçue -> attendre 10 secondes -> notification reçue -> et revenir pour attendre et recevoir à nouveau
cela arrive quand au premier plan. mais pas en arrière-plan. pls aide.
vous pouvez accéder aux fonctionnalités et activer le mode d’arrière-plan et l’audio actif. AirPlay, et image et image.
Ça marche vraiment . vous n'avez pas besoin de définir DispatchQueue ... vous pouvez utiliser Timer.
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (t) in
print("time")
}
Une minuterie ne peut fonctionner en arrière-plan que si les deux conditions suivantes sont vraies:
Votre application pour une autre raison s'exécute en arrière-plan. (La plupart des applications ne le font pas; la plupart des applications sont suspendues lorsqu'elles passent en arrière-plan.) Et:
La minuterie fonctionnait déjà lorsque l'application est entrée dans l'arrière-plan.
La minuterie ne fonctionnera pas en arrière-plan. Pour la tâche de fond, vous pouvez vérifier ce lien ci-dessous ...
https://www.raywenderlich.com/143128/background-modes-tutorial-getting-started