requestedUpdateDidBegin juste appelé une fois

Je pensais que le code suivant requestrait de nouveldatatables toutes les 5 minutes, mais il n'y a pas de mise à jour sur le simulateur.

func getNextRequestedUpdateDateWithHandler(handler: (NSDate?) -> Void) { print("update") handler(NSDate(timeIntervalSinceNow: NSTimeInterval(5*60)) } 

Ai-je besoin de parameters de projet pour cela?

Je l'ai testé avec Xcode 7.1.1 et 7.2 Beta 4

Vous devez gérer la mise à jour planifiée lorsqu'elle se produit ou ClockKit cesse de requestr de nouvelles inputs de ligne de time:

À un certain point après la date renvoyée par votre méthode getNextRequestedUpdateDateWithHandler:, ClockKit démarre une mise à jour programmée de votre complication. Les mises à jour planifiées n'élargissent pas automatiquement votre assembly. Au lieu de cela, ils sont une opportunité pour vous de faire savoir à ClockKit si vous avez ou non des données à append à votre calendar.

Au début d'une mise à jour programmée, ClockKit appelle la méthode requestedUpdateDidBegin ou requestedUpdateBudgetExhausted, en fonction de l'état du budget time de votre complication. Vous devez implémenter l'une de ces methods ou les deux si vous souhaitez append des données à votre assembly. Votre implémentation de ces methods devrait prolonger ou recharger le calendar de votre complication si nécessaire. Lorsque vous faites cela, ClockKit request les nouvelles inputs de chronologie à partir de votre source de données. Si vous ne prolongez pas ou ne rechargez pas votre chronologie, ClockKit ne request pas de nouvelles inputs de chronologie.

Votre source de données manque probablement la méthode facultative requestedUpdateDidBegin . Voici un exemple illustrant comment étendre votre calendar lorsque la mise à jour se produit:

 // MARK: - Responding to Scheduled Updates func requestedUpdateDidBegin() { let server=CLKComplicationServer.sharedInstance() for complication in server.activeComplications { server.extendTimelineForComplication(complication) } } 

Notez que l'intervalle de mise à jour minimum est de 10 minutes, de sorte que vous ne serez pas appelé toutes les 5 minutes comme prévu. Des mises à jour fréquentes peuvent également épuiser votre budget de mise à jour. Apple recommand aux développeurs de:

Spécifiez une date aussi loin dans le futur que vous pouvez gérer. Ne requestz pas au système de mettre à jour votre complication en quelques minutes. Au lieu de cela, fournir des données pour durer de nombreuses heures ou pour une journée entière. Si votre budget est épuisé, la prochaine mise à jour programmée n'aura lieu qu'après la réapprovisionnement de votre budget.