Comment puis-je implémenter la fonctionnalité "Snooze" d'Apple dans leur application Horloge?

Je plonge dans le développement iOS et je construis ma propre application de réveil pour me familiariser avec la plate-forme et le SDK. L'une des API que j'étudie actuellement est l'API Local Notifications, que je suppose être la même qu'Apple utilise pour implémenter ses alarmes dans son application Clock.

Ce que je ne comprends pas, c'est comment ils implémentent leur fonctionnalité "Snooze". Si je comprends bien, les notifications locales vous permettent de présenter à l'user une boîte d'alerte qui a au plus deux buttons lorsque votre application ne fonctionne pas au premier plan, un button pour rejeter l'alerte et un button pour amener l'user à votre application . Dans l'application Horloge d'Apple, cependant, il apparaît que l'user est présenté avec une boîte d'alerte avec deux buttons, un button pour fermer l'alarme et un button pour "Répéter" et reprogrammer l'alarme sans lancer l'application Horloge. Mes questions sont …

  1. Lorsque l'user clique sur le button "Répéter", comment pensez-vous qu'Apple rééchelonne la notification locale pour l'alarme sans lancer l'application Horloge? Pensez-vous qu'ils utilisent leurs propres API privées pour contourner les limitations des notifications locales qui ne permettent que deux options? Ou pensez-vous qu'ils lancent l'application Horloge pour replanifier la notification locale, ils ne montrent pas l'application en cours de lancement et de quitter?

  2. La documentation indique que la propriété "alertAction" de la notification locale est le text à afficher sur le button droit de la boîte d'alerte et la barre de slider de l'écran de locking. Dans l'application Horloge d'Apple, cependant, le text "Répéter" est le button gauche dans la zone d'alerte, ni le text de la barre glissière. Pourquoi est-ce en arrière?

Merci beaucoup d'avance pour vos pensées!

L'API de notification locale n'a aucun mécanisme pour faire ce que vous voulez. L'application de réveil n'utilise presque certainement pas l'infrastructure pour les notifications locales, elle les a précédées. Même s'il est factorisé sur une partie de l'infrastructure fournie par les notifications locales, il n'utilise certainement pas les API publiques.

Vous devriez déposer un bug demandant que cette fonctionnalité soit ajoutée.