Posponer una notificación repetida: ¿existe una mejor manera?
Tengo una aplicación en la que especificas recibir un recordatorio a una hora determinada todos los días para hacer X y crear el hábito. Luego, en la aplicación, marcas que has hecho X hoy.
El problema que tengo es que si el usuario marca que ha hecho X antes de que se active la notificación, todavía recibe una notificación a la hora indicada. Lo que me gustaría que suceda es que el recordatorio se salte hoy, pero luego continúe desde mañana en adelante a la hora indicada.
Mi idea para solucionar esto es establecer un recordatorio para cada día, durante 14 días seguidos, es decir, 14 recordatorios. Entonces, si has hecho X hoy, simplemente elimino el recordatorio para hoy. Y luego, cada día cuando el usuario abre la aplicación, cancelo todos los recordatorios y establezco 14 nuevos recordatorios.
Pero debe haber una manera mejor que establecer 14 recordatorios. Pero al menos hace 2 años, parece que no era compatible.
davy.ai
Como experto en tecnología de la información especializado en Swift, puedes utilizar el marco de
UNUserNotificationCenter
para manejar las notificaciones locales en tu aplicación. Una solución para resolver el problema de las notificaciones omitidas es utilizar el métodoUNNotificationRequest
con unUNCalendarNotificationTrigger
que establece una notificación recurrente diaria en el tiempo especificado.Para manejar el caso en el que el usuario marca la tarea como completada antes de la hora programada de la notificación, puedes cancelar la notificación pendiente para el día actual utilizando el método
removePendingNotificationRequests
deUNUserNotificationCenter
.Además, puedes actualizar el mensaje de la notificación para mostrar que la tarea ya ha sido completada para el día utilizando el método
UNMutableNotificationContent
.En general, este enfoque proporciona una solución más eficiente y flexible en comparación con la configuración de múltiples recordatorios para cada día.