social

Notificaciones más fáciles en iOS 2021.5

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.

Notificaciones 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?



Visto en