2013-04-11 1 views
1

Je travaillais sur l'application Alarm Clock et j'utilisais les notifications locales pour déclencher l'alarme. J'ai également besoin de répéter l'alarme selon l'intervalle de temps défini par l'utilisateur dans les paramètres utilisateur.Snooze Alarm dans l'application Alarm Clock dans iPhone?

L'utilisateur ne peut pas mettre en attente jusqu'à ce que l'application démarre i.e méthode ci-dessous est appelée. Comme j'appelle la méthode pour répéter l'alarme en ajoutant l'intervalle de temps dans firedate et en replanifiant la notification locale. Le problème est l'application vient au premier plan et selon Apple HIG je ne devrais pas terminer l'application ou envoyer l'application à l'arrière-plan automatiquement et donc l'utilisateur doit appuyer sur le bouton d'accueil pour envoyer l'application en arrière-plan. J'ai récemment rencontré this app. Il peut répéter l'alarme comme je le souhaite. Un autre problème est que je peux sélectionner le son à lire à partir de Ma bibliothèque musicale au this app.

Une idée de comment cette application parvient à le faire?

Répondre

0

Pour faire ce que vous cherchez, il y a plusieurs choses à considérer. Votre approche de l'utilisation UILocalNotification est correcte, c'est un bon début.

Pour mettre en œuvre correctement une fonctionnalité de "répétition", vous devez considérer l'application qui s'exécute à la fois au premier plan et en arrière-plan.

  • Si l'application est au premier plan (ou l'utilisateur ouvre l'application de la bannière de notification de l'extérieur) application:didReceieveLocalNotification: seront appelés et vous pouvez simplement mettre à jour votre interface utilisateur pour afficher un bouton snooze et programmer une nouvelle notification locale de la durée chargée à partir de NSUserDefaults.
  • Si l'application est en arrière-plan et que l'utilisateur ferme la notification, il n'y a aucun moyen d'essayer ultérieurement de «répéter» l'alarme.

Comme pour jouer un son personnalisé à partir de la bibliothèque iTunes jeter un oeil à la soundName propriété sur UILocalNotification

+0

Merci Dan, je vérifie déjà l'état d'application à savoir si l'application est au premier plan, je peux faire quoi que ce soit Je veux faire comme afficher alertview, jouer le son, etc. Le problème est quoi faire quand l'application est en arrière-plan? Comme je l'ai vu dans l'application que j'ai mentionné est en train de somnoler en arrière-plan. Est-il possible que l'application utilise la notification Push au lieu de la notification locale? –

+0

Pour la propriété soundname de la notification locale: Apple dit que le fichier son ne doit pas dépasser 30 secondes. Les fichiers dans la bibliothèque iTunes peuvent être plus de 30 secondes, j'ai essayé d'obtenir le chemin du fichier à partir du contrôleur de médias et le définir comme un nom de son, mais cela n'a pas fonctionné. Je suppose que c'est parce que le fichier iTunes est supérieur à 30 secondes. Ou probablement je le fais mal. –

+0

Oui, je dirais qu'ils utilisent des notifications push et le contrôle des alarmes via un service web dans le nuage. De cette façon, si les notifications ne sont pas effacées, elles peuvent en pousser une autre une minute plus tard et "répéter". Cela a-t-il du sens? –