Notificaciones de Mis allegados

Importante

Mis Allegados ya no se admite en versiones de Windows 11 y Windows 10 con la actualización KB5034203.

Las notificaciones de Mis allegados ofrecen una nueva forma en que los usuarios se conecten con las personas que les interesan a través de gestos expresivos rápidos. En este artículo se explica cómo diseñar e implementar las notificaciones de Mis allegados en la aplicación. Para tener todas las implementaciones, consulte el ejemplo de notificaciones de Mis allegados.

heart emoji notification

Requisitos

Funcionamiento

Como alternativa a las notificaciones del sistema genéricas, ahora puede enviar notificaciones a través de la característica Mis allegados para que los usuarios disfruten de una experiencia más personal. Se trata de un nuevo tipo de sistema de notificaciones, que funciona a través de un contacto anclado en la barra de tareas del usuario con la característica Mis allegados. Cuando se recibe la notificación, la imagen de contacto del remitente aparecerá animado en la barra de tareas y se reproducirá un sonido, lo que indicará que se ha realizado la notificación. La animación o imagen concreta durante la carga aparecerá durante 5 segundos (o, si la animación de la carga dura menos de 5 segundos, se repetirá hasta que hayan pasado 5 segundos).

Tipos de imagen compatibles

  • GIF
  • Imagen estática (JPEG, PNG)
  • Spritesheet (solo vertical)

Nota:

Una spritesheet es una animación derivada de una imagen estática (JPEG o PNG). Cada uno de los fotogramas se organizan verticalmente, de modo que el primer fotograma está en la parte superior (aunque puede indicar un fotograma de inicio diferente en el proceso de carga de la notificación). Cada fotograma debe tener la misma altura, que el programa convierte en bucle para crear una secuencia animada (como un folioscopio con sus páginas colocadas verticalmente). Consulte el siguiente ejemplo de spritesheet.

rainbow spritesheet

Parámetros de las notificaciones

Las notificaciones de Mis allegados usan el mismo sistema de notificaciones, pero necesitan un nodo de enlace adicional para cargar las notificaciones. Este segundo enlace debe incluir el siguiente parámetro:

experienceType="shoulderTap"

Esto indica que la notificación debe tratarse como una notificación de Mis allegados.

El nodo de imagen dentro del enlace debe incluir los parámetros siguientes:

  • src
    • El URI del recurso. Puede ser un URI web HTTP/HTTPS, un URI msappx o la ruta de acceso a un archivo local.
  • spritesheet-src
    • El URI del recurso. Puede ser un URI web HTTP/HTTPS, un URI msappx o la ruta de acceso a un archivo local. Solo se requiere para animaciones de spritesheet.
  • spritesheet-height
    • La altura del fotograma (en píxeles). Solo se requiere para animaciones de spritesheet.
  • spritesheet-fps
    • Fotogramas por segundo (FPS). Solo se requiere para animaciones de spritesheet. Solo se admiten los valores del 1 al 120.
  • spritesheet-startingFrame
    • El número de fotograma en que va a empezar la animación. Solo se usa para animaciones de spritesheet y el valor predeterminado es 0 si no se indica.
  • alt
    • Cadena de texto usada para la narración del lector de pantalla.

Nota:

Al realizar una notificación animada, debe indicar una imagen estática en el parámetro "src". Se usará como reserva por si la animación no se puede mostrar.

Además, el nodo de notificaciones de nivel superior debe incluir el parámetro hint-people para especificar el contacto de envío. Este parámetro puede tener cualquiera de los valores siguientes:

  • Dirección de correo electrónico
    • Por ejemplo mailto:johndoe@mydomain.com
  • Número de teléfono
  • Id. remoto
    • Por ejemplo, remoteid:1234

Nota:

Si la aplicación usa las API de ContactStore y usa la propiedad StoredContact.RemoteId para vincular contactos almacenados en el equipo con contactos almacenados de forma remota, es importante que el valor de la propiedad RemoteId sea estable y único. Esto significa que el ID remoto debe identificar de forma coherente una sola cuenta de usuario y debe contener una etiqueta única para garantizar que no entra en conflicto con los ID remotos de otros contactos del equipo, incluidos los contactos que pertenecen a otras aplicaciones. Si no se garantiza que los ID remotos usados por la aplicación sean estables y únicos, puede usar la clase RemoteIdHelper para añadir una etiqueta única a todos los ID remotos antes de añadirlos al sistema. Si lo prefiere, puede no usar la propiedad RemoteId y, en su lugar, crear una propiedad extendida personalizada en la que almacenar ID remotos para los contactos.

Además del segundo enlace y la carga, debe incluir otra carga en el primer enlace para el sistema de notificaciones de reserva. La notificación lo usará si se fuerza para que se active una notificación del sistema normal (se explica con más detalle al final de este artículo).

Crear la notificación

Puede crear una plantilla de notificación de Mis allegados, tal como lo haría con una notificación del sistema.

Este es un ejemplo de cómo crear una notificación de Mis allegados con la carga de una imagen estática:

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastGeneric">
            <text hint-style="body">Toast fallback</text>
            <text>Add your fallback toast content here</text>
        </binding>
        <binding template="ToastGeneric" experienceType="shoulderTap">
            <image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-static-payload.png"/>
        </binding>
    </visual>
</toast>

Al activarse la notificación, debería tener este aspecto:

static image notification

Este es un ejemplo de cómo crear una notificación con una carga animada tipo spritesheet. Este spritesheet tiene una altura de 80 píxeles, cuya animación se reproducirá a 25 fotogramas por segundo. Se fija el fotograma inicial en 15 y se incluye una imagen de reserva estática en el parámetro "src". La imagen de reserva se aplicará en caso de que la animación de la spritesheet no se pueda mostrar.

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastGeneric">
            <text hint-style="body">Toast fallback</text>
            <text>Add your fallback toast content here</text>
        </binding>
        <binding template="ToastGeneric" experienceType="shoulderTap">
            <image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-static.png"
                spritesheet-src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-spritesheet.png"
                spritesheet-height='80' spritesheet-fps='25' spritesheet-startingFrame='15'/>
        </binding>
    </visual>
</toast>

Al activarse la notificación, debería tener este aspecto:

spritesheet notification

Activación de la notificación

Para activar una notificación de Mis allegados, es necesario convertir la plantilla de la notificación en un objeto XmlDocument. Cuando haya definido la notificación en un archivo XML (aquí denominado "content.xml"), podrá usar este código para activarla:

string xmlText = File.ReadAllText("content.xml");
XmlDocument xmlContent = new XmlDocument();
xmlContent.LoadXml(xmlText);

Este código lo podrá usar para crear y enviar la notificación:

ToastNotification notification = new ToastNotification(xmlContent);
ToastNotificationManager.CreateToastNotifier().Show(notification);

Conversión a notificación del sistema

En algunos casos, una notificación de Mis allegados se activará en forma de notificación del sistema normal. Una notificación de Mis allegado pasará al estado de notificación del sistema en las condiciones siguientes:

  • La notificación no se puede mostrar
  • El destinatario no tiene habilitadas las notificaciones de Mis allegados
  • El contacto del remitente no está anclado a la barra de tareas del destinatario

Si una notificación de Mis allegados pasa a ser notificación del sistema, se omitirá el segundo enlace específico de Mis allegados y solo se usará el primer enlace para mostrar la notificación. Este es el motivo por el que es fundamental incluir un proceso de carga de reserva en el primer enlace del sistema.

Consulte también