Je dois créer une application de réveil pour iPhone dans laquelle l'utilisateur peut régler l'heure et le son de l'alarme. Ce faisant, j'ai utilisé UILocalNotification pour déclencher l'alarme.
Maintenant, dans UILocalNotification, nous obtenons d’abord une alerte de notification avec les options "Fermer" et "Afficher". Si l'utilisateur appuie sur "Afficher", mon délégué reçoit le message application:didReceiveLocalNotification:
et le son de l'alarme retentit.
Mais dans l'application d'alarme native du système, nous ne voyons pas d'alerte de notification; il joue juste directement le son de l'alarme. Comment puis-je demander à mon application d'utiliser ce comportement?
Je suis d'accord avec David. L'application d'alarme intégrée iOS reçoit un traitement spécial d'Apple pour émettre un son supérieur à 30 secondes en arrière-plan. Il semble utiliser une API privée pour la faire sonner plus longtemps, même si elle est en arrière-plan ou fermée. Ce n'est pas disponible pour les autres applications construites en dehors d'Apple, alors n'essayez même pas de rivaliser avec elle. Si vous achetez toutes les applications Alarm Clock de l'App Store (approuvées par Apple) et que vous les essayez une à une, vous verrez qu'elles ne sont pas derrière l'application d'alarme intégrée dans la fonction la plus importante d'une alarme: "Sonner pendant une longue période, dans n'importe quel état de l'application (active, en arrière-plan ou fermée) "
Votre meilleur choix pour simuler une alarme d’arrière-plan est de faire appel à UILocalNotification pendant 30 secondes. Si vous voulez vraiment réveiller votre gros dormeur, programmez cinq notifications à soixante secondes d'intervalle ou quelque chose du genre, dans l'espoir qu'elles se réveillent avant la fin de la cinquième notification.
Notez qu'avec cette méthode, l'utilisateur qui manque l'alarme aura 5 popups sur son écran quand il se réveillera (moins s'il se réveille au cours d'une des popups d'alarme), ainsi il passera ses premières secondes de fermeture le matin. ces popups - pas la plus grande expérience utilisateur.
Conclusion: les applications de réveil ne sont valables que pour le premier plan. La meilleure application d'alarme qui fonctionne dans n'importe quel état est l'application d'horloge intégrée créée par Apple.
Ce comportement d'alarme n'est pas disponible pour les applications iOS. Vous avez la possibilité de créer des notifications locales et d'y ajouter des sons, mais la durée du son est limitée. Vous ne pouvez pas avoir un son continu, comme sur l’alarme intégrée.
Une option consiste à répéter les alertes. Pour que votre application envoie une alerte, attende un peu puis envoie une autre. Vous répétez un nombre spécifié de fois ou jusqu'à ce que l'utilisateur interagisse avec votre application. Je ne pense pas que cela fournirait une excellente expérience utilisateur, donc je ne le recommande pas.
Je suis presque sûr que vous pouvez avoir votre propre son de notification local personnalisé.
Exemple de code localNotif.soundName = @"alarmsound.caf";
Remarque Le son de notification local ne doit durer que 30 secondes ou moins pour être lu. Vous pouvez obtenir plus info ici .
Si vous activez les modes d’arrière-plan «Audio, AirPlay et Picture in Picture» et «Notifications à distance», vous pouvez utiliser une notification Push silencieuse pour réactiver le périphérique, puis commencer à lire le son. ne sera pas limité à 30 secondes pour répondre à la notification comme d'habitude. Cela ne fonctionnera pas si l'application a été supprimée manuellement par l'utilisateur, mais si l'utilisateur le faisait, vous pourriez lui envoyer une notification locale lui demandant de rouvrir l'application.