Уведомления близких людей

Важно!

Мои люди больше не поддерживаются в версиях Windows 11 и Windows 10 с применением КБ5034203.

Мои Люди уведомления предоставляют пользователям новый способ связи с людьми, которые они заботятся, через быстрые экспрессивные жесты. В этой статье показано, как разработать и реализовать уведомления my Люди в приложении. Полные реализации см. в примере "Мои Люди уведомления".

heart emoji notification

Requirements

  • Windows 10 и Microsoft Visual Studio 2019 или более поздней версии. Дополнительные сведения об установке см. в статье "Настройка с помощью Visual Studio".
  • Знание основ C# или схожих объектно-ориентированных языков программирования. Сведения о начале работы с C#см. в статье "Создание приложения Hello, world".

Как это работает

В качестве альтернативы универсальным всплывам уведомлениям теперь можно отправлять уведомления с помощью функции "Мой Люди", чтобы обеспечить более личный интерфейс для пользователей. Это новый вид всплывающего уведомления, отправляемого из контакта, закрепленного на панели задач пользователя с помощью функции My Люди. Когда уведомление получено, изображение контакта отправителя будет анимироваться на панели задач, а звук будет воспроизводиться, сигналируя о том, что уведомление запускается. Анимация или изображение, указанное в полезных данных, будет отображаться в течение 5 секунд (или, если полезные данные являются анимацией менее 5 секунд, она будет циклироваться до 5 секунд).

Поддерживаемые типы изображений

  • GIF
  • Статический образ (JPEG, PNG)
  • Spritesheet (только по вертикали)

Примечание.

Spritesheet — это анимация, производная от статического изображения (JPEG или PNG). Отдельные кадры расположены по вертикали, таким образом, что первый кадр находится на вершине (хотя можно указать другой начальный кадр в полезных данных всплывающих данных). Каждый кадр должен иметь одинаковую высоту, через которую программа циклит для создания анимированной последовательности (например, флипбук со своими страницами, выложенными по вертикали). Ниже показан пример спрайт-таблицы.

rainbow spritesheet

Параметры уведомлений

Уведомления Люди используют платформу всплывающих уведомлений, но требуют дополнительного узла привязки в полезных данных всплывающей нагрузки. Эта вторая привязка должна включать следующий параметр:

experienceType="shoulderTap"

Это означает, что всплывающее уведомление должно рассматриваться как уведомление "Мой Люди".

Узел изображения внутри привязки должен содержать следующие параметры:

  • src
    • Универсальный код ресурса (URI) ресурса. Это может быть веб-URI HTTP/HTTPS, URI msappx или путь к локальному файлу.
  • spritesheet-src
    • Универсальный код ресурса (URI) ресурса. Это может быть веб-URI HTTP/HTTPS, URI msappx или путь к локальному файлу. Требуется только для анимации спрайт-таблицы.
  • spritesheet-height
    • Высота кадра (в пикселях). Требуется только для анимации спрайт-таблицы.
  • spritesheet-fps
    • Кадры в секунду (FPS). Требуется только для анимации спрайт-таблицы. Поддерживаются только значения 1–120.
  • spritesheet-startingFrame
    • Номер кадра для начала анимации. Используется только для анимации спрайт-таблицы и по умолчанию значение 0, если оно не указано.
  • alt
    • Текстовая строка, используемая для чтения с экрана.

Примечание.

При создании анимированного уведомления необходимо указать статический образ в параметре src. Он будет использоваться в качестве резервного копирования, если анимация не отображается.

Кроме того, узел всплывающего уведомления верхнего уровня должен включать параметр hint-people , чтобы указать контакт отправки. Этот параметр может иметь следующие значения:

  • Адрес электронной почты
    • Например. mailto:johndoe@mydomain.com
  • Номер телефона
  • Удаленный идентификатор
    • Например, remoteid:1234

Примечание.

Если приложение использует API ContactStore и использует свойство StoredContact.RemoteId для связывания контактов, хранящихся на компьютере, с контактами, хранящимися удаленно, важно, чтобы значение свойства RemoteId было стабильным и уникальным. Это означает, что удаленный идентификатор должен последовательно определять одну учетную запись пользователя и содержать уникальный тег, чтобы гарантировать, что он не конфликтует с удаленными идентификаторами других контактов на компьютере, включая контакты, принадлежащие другим приложениям. Если удаленные идентификаторы, используемые приложением, не являются стабильными и уникальными, можно использовать класс RemoteIdHelper для добавления уникального тега ко всем удаленным идентификаторам перед добавлением их в систему. Кроме того, вы можете не использовать свойство RemoteId вообще и вместо этого создать пользовательское расширенное свойство, в котором будут храниться удаленные идентификаторы для контактов.

Помимо второй привязки и полезных данных, необходимо включить другую полезные данные в первую привязку для резервного всплывающего уведомления. Уведомление будет использовать это, если оно вынуждено отменить изменения на регулярное всплывающее уведомление (описано далее в конце этой статьи).

Создание уведомления

Вы можете создать шаблон уведомлений my Люди так же, как и всплывающее уведомление.

Ниже приведен пример создания уведомления My Люди со статическими полезными данными изображения:

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

При запуске уведомления он должен выглядеть следующим образом:

static image notification

Ниже приведен пример создания уведомления с анимированными полезными данными spritesheet. Эта spritesheet имеет высоту кадра 80 пикселей, которая будет анимироваться на 25 кадров в секунду. Мы задали начальную рамку значение 15 и предоставьте ему статический резервный образ в параметре SRC. Резервный образ используется, если анимация спрайт-таблицы не отображается.

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

При запуске уведомления он должен выглядеть следующим образом:

spritesheet notification

Запуск уведомления

Чтобы запустить уведомление My Люди, необходимо преобразовать шаблон всплывающего уведомления в объект XmlDocument. При определении всплывающего уведомления в XML-файле (здесь с именем "content.xml"), этот код можно использовать для запуска:

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

Затем этот код можно использовать для создания и отправки всплывающего уведомления:

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

Возвращение к тосту

В некоторых случаях уведомление "Моя Люди" будет отображаться как обычное всплывающее уведомление. Уведомление "Моя Люди" возвращается в всплывающее уведомление в следующих условиях:

  • Не удается отобразить уведомление
  • Мои уведомления Люди не включены получателем
  • Контакт отправителя не закреплен на панели задач получателя

Если уведомление "Моя Люди" возвращается к всплывающему элементу, вторая привязка "My-Люди" игнорируется, а для отображения всплывающего уведомления используется только первая привязка. Поэтому важно обеспечить резервную нагрузку в первой привязке всплывающей привязки.

См. также