Las notificaciones son una característica popular de las aplicaciones complementarias, pero las diferencias entre Android e iOS hacen que sea doloroso usarlas en todo su potencial. A partir del lanzamiento de hoy de iOS 2021.5, la gran mayoría de la funcionalidad ahora se comparte en ambas plataformas. Como parte de esto, la documentación de notificaciones también se ha actualizado ampliamente.
Índice
Toggle Table of ContentNotificaciones procesables
La creación de notificaciones procesables para iOS y watchOS ya no requiere definir categorías antes de usarlas; en su lugar, puede incluir las acciones directamente en la notificación. La compatibilidad con macOS se incluirá en una versión futura. Las categorías eran uno de los obstáculos en torno a la compatibilidad con varios servidores, por lo que eliminarlas resuelve por completo esa parte.
En la documentación se incluye cómo migrar de categorías a acciones dinámicas. Ambos todavía son compatibles con la aplicación en este momento, pero las categorías se eliminarán en el futuro.
A continuación se muestra un ejemplo de secuencia de comandos que envía una notificación procesable y utiliza variables de secuencia de comandos, espera a que se active y elige decidir qué ejecutar.
# In a script's `sequence` or an automation's `actions`
- alias: "Set up action variables"
variables:
# Including 'id' in 'action' allows us to identify this script run
# and not accidentally trigger for other notification actions
action_very: "{{ 'VERY_' ~ context.id }}"
action_mod: "{{ 'MOD_' ~ context.id }}"
- alias: "Send the notification"
service: notify.mobile_app_zac_iphone
data:
message: "Are you hungry?"
data:
actions:
- action: "{{ action_very }}"
title: "Very Hungry"
- action: "{{ action_mod }}"
title: "Moderately Hungry"
- alias: "Wait for a response"
wait_for_trigger:
# We wait for specific actions because we don't want to run for
# any action, only for a response to the one we just sent
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "{{ action_very }}"
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "{{ action_mod }}"
- alias: "Handle the response"
choose:
- conditions: "{{ wait.trigger.event.data.action == action_very }}"
sequence:
- service: notify.notify
data:
message: "⚠️ Soylent Launch Incoming"
- service: homeassistant.turn_on
target:
entity_id: switch.soylent_dispenser
- conditions: "{{ wait.trigger.event.data.action == action_mod }}"
sequence:
- service: notify.notify
data:
message: "Anyone want to grab a croissant? -Zac"
¡Esto funciona para ambas plataformas sin incluir ninguna lógica específica de la plataforma! También se comparten otras características relacionadas con las notificaciones procesables, incluida la adición de una URL para abrir al elegir una acción:
actions:
- action: "URI"
title: "View More"
uri: "/lovelace/some-dashboard"
Reemplazo, agrupación, compensación
Reemplazar las notificaciones existentes o enhebrar ciertas notificaciones fue otra diferencia entre las plataformas, y las versiones específicas de iOS eran un poco menos ergonómicas, por lo que las versiones de Android ahora funcionan para ambas. Ahora puede usar el más simple tag
y group
llaves:
- service: notify.mobile_app_<your_device>
data:
message: "The front door is unlocked!"
data:
# replace any existing front_door_lock notifications
tag: front_door_lock
# thread with other doors notifications
group: doors
También puede eliminar una notificación existente por su etiqueta:
- service: notify.mobile_app_<your_device>
data:
message: clear_notification
data:
tag: front_door_lock
Archivos adjuntos
Los archivos adjuntos ya no requieren ciertas categorías para archivos adjuntos dinámicos, por lo que puede incluir la reproducción en tiempo real de una cámara para cualquier notificación:
- service: notify.mobile_app_<your_device>
data:
message: "Motion detected"
data:
entity_id: camera.outside
Especificar un archivo adjunto no dinámico es un poco más fácil ahora, lo que le permite abreviar la parte del archivo adjunto:
- service: notify.mobile_app_<your_device>
data:
message: "3D Print Complete"
data:
image: /media/local/3dprinter/latest.jpg
Puedes usar video
, image
y audio
. Solo image
es compatible con Android.
Es posible que haya notado que las notificaciones de iOS tienen límites de archivos; esta versión agrega la descarga bajo demanda de archivos adjuntos que exceden el límite de tamaño o cuando se solicita mediante el lazy
opción de adjunto.
Futuras áreas de mejora
Todavía estamos buscando lugares de confusión o redundancia en las notificaciones en las aplicaciones de iOS y Android. ¿Qué le gustaría ver mejorado?