Уведомления близких людей
Внимание
Мои люди больше не поддерживаются в версиях Windows 11 и Windows 10 с применением KB5034203.
Уведомления "Мои люди" предоставляют пользователям новый способ подключения к людям, которым они заботятся, с помощью быстрых экспрессивных жестов. В этой статье показано, как разрабатывать и реализовывать уведомления "Мои люди" в приложении. Полные реализации см. в примере уведомлений "Мои люди".
Требования
- Windows 10 и Microsoft Visual Studio 2019 или более поздней версии. Дополнительные сведения об установке см. в статье "Настройка с помощью Visual Studio".
- Знание основ C# или схожих объектно-ориентированных языков программирования. Сведения о начале работы с C#см. в статье "Создание приложения Hello, world".
Принцип работы
В качестве альтернативы универсальным всплывам уведомлениям теперь можно отправлять уведомления с помощью функции "Мои люди", чтобы обеспечить более личный интерфейс для пользователей. Это новый вид всплывающего уведомления, отправленный из контакта, закрепленного на панели задач пользователя с помощью функции "Мои люди". Когда уведомление получено, изображение контакта отправителя будет анимироваться на панели задач, а звук будет воспроизводиться, сигналируя о том, что уведомление запускается. Анимация или изображение, указанное в полезных данных, будет отображаться в течение 5 секунд (или, если полезные данные являются анимацией менее 5 секунд, она будет циклироваться до 5 секунд).
Поддерживаемые типы изображений
- GIF
- Статический образ (JPEG, PNG)
- Spritesheet (только по вертикали)
Примечание.
Spritesheet — это анимация, производная от статического изображения (JPEG или PNG). Отдельные кадры расположены по вертикали, таким образом, что первый кадр находится на вершине (хотя можно указать другой начальный кадр в полезных данных всплывающих данных). Каждый кадр должен иметь одинаковую высоту, через которую программа циклит для создания анимированной последовательности (например, флипбук со своими страницами, выложенными по вертикали). Ниже показан пример спрайт-таблицы.
Параметры уведомлений
Уведомления "Мои люди" используют платформу всплывающих уведомлений , но требуют дополнительного узла привязки в полезных данных всплывающих данных. Эта вторая привязка должна включать следующий параметр:
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
- Например.
- Номер телефона
- Например , 888-888-8888
- Удаленный идентификатор
- Например, remoteid:1234
Примечание.
Если приложение использует API ContactStore и использует свойство StoredContact.RemoteId для связывания контактов, хранящихся на компьютере, с контактами, хранящимися удаленно, важно, чтобы значение свойства RemoteId было стабильным и уникальным. Это означает, что удаленный идентификатор должен последовательно определять одну учетную запись пользователя и содержать уникальный тег, чтобы гарантировать, что он не конфликтует с удаленными идентификаторами других контактов на компьютере, включая контакты, принадлежащие другим приложениям. Если удаленные идентификаторы, используемые приложением, не являются стабильными и уникальными, можно использовать класс RemoteIdHelper для добавления уникального тега ко всем удаленным идентификаторам перед добавлением их в систему. Кроме того, вы можете не использовать свойство RemoteId вообще и вместо этого создать пользовательское расширенное свойство, в котором будут храниться удаленные идентификаторы для контактов.
Помимо второй привязки и полезных данных, необходимо включить другую полезные данные в первую привязку для резервного всплывающего уведомления. Уведомление будет использовать это, если оно вынуждено вернуться к регулярному всплывающему элементу (описано далее в конце этой статьи).
Создание уведомления
Вы можете создать шаблон уведомлений "Мои люди", как и всплывающее уведомление.
Ниже приведен пример создания уведомления "Мои люди" со статическими полезными данными изображения:
<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>
При запуске уведомления он должен выглядеть следующим образом:
Ниже приведен пример создания уведомления с анимированными полезными данными 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>
При запуске уведомления он должен выглядеть следующим образом:
Запуск уведомления
Чтобы запустить уведомление "Мои люди", необходимо преобразовать шаблон всплывающего элемента в объект 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);
Возвращение к тосту
В некоторых случаях уведомление "Мои люди" будет отображаться как регулярное всплывающее уведомление. Уведомление "Мои люди" возвращается в всплывающее уведомление в следующих условиях:
- Не удается отобразить уведомление
- Уведомления "Мои люди" не включены получателем
- Контакт отправителя не закреплен на панели задач получателя
Если уведомление "Мои люди" возвращается в всплывающее уведомление, вторая привязка "Мои люди" игнорируется, а для отображения всплывающего уведомления используется только первая привязка. Поэтому важно обеспечить резервную нагрузку в первой привязке всплывающей привязки.