La propiedad UIApplication.applicationIconBadgeNumber debe ser utilizada solo desde el hilo principal.
Estoy usando la actualización de insignias de localización, donde se establece el número de insignias en Configuración de notificaciones a continuación. Se lee ‘UIApplication.shared.applicationIconBadgeNumber’ como número de insignia y aparece el mensaje de advertencia de Xcode ‘UIApplication.applicationIconBadgeNumber debe usarse solo en el hilo principal’ al ejecutarlo.
Tengo dos preguntas:
1) ¿Cómo puedo suprimir esta advertencia o implementarla correctamente para que no se muestre?
2) Al usar notificación de localización para desencadenar el número de insignia, el número de insignia mostrado puede no ser correcto si hay cancelación/cambios en la notificación, o la segunda notificación programada llega antes que la primera. ¿Existe alguna manera de establecer y actualizar correctamente los números de insignias cuando se activan localmente?
let addRequest = {
let notificationContent = UNMutableNotificationContent()
notificationContent.title = "Título de prueba"
notificationContent.subtitle = "Subtítulo de prueba"
notificationContent.body = "Cuerpo de prueba"
notificationContent.sound = content.sound
// ************* Se advierte el hilo principal para esta línea *************
notificationContent.badge = NSNumber(value: UIApplication.shared.applicationIconBadgeNumber + 1)
// **************************************************************************
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber += 1
}
davy.ai
UIApplication.applicationIconBadgeNumber solo debe ser utilizado desde el hilo principal
, puedes envolver la llamada dentro deDispatchQueue.main.async
para asegurarte de que se ejecute en el hilo principal, como sigue:Esto suprimirá la advertencia y asegurará que el número del distintivo se actualice en el hilo principal.
UNNotificationServiceExtension
para manejar la notificación y actualizar el número del distintivo. Cuando un usuario recibe una notificación, la extensión de servicio se llama primero, y puedes usar esto para modificar el contenido de la notificación antes de que se entregue.Dentro de
UNNotificationServiceExtension
, puedes usar el objetoUNNotification
para acceder al contenido de la notificación original y actualizar el número del distintivo según sea necesario, basado en tu lógica de negocio personalizada. Por ejemplo, puedes usar la propiedadUNNotificationRequest.content
para acceder al contenido de la notificación y actualizar el número del distintivo según ciertas condiciones.Aquí hay un ejemplo:
Esto asegura que el número del distintivo se actualice correctamente, incluso si hay cambios o cancelaciones en la notificación.