#windows #uwp #notifications #com #toast
#Windows #uwp #уведомления #com #всплывающее уведомление
Вопрос:
Я работал над всплывающим уведомлением в соответствии с приведенными ниже требованиями.
- Приложение должно обрабатывать все типы типов активации (передний план, фон, протокол).
Итак, я создал образец приложения UWP. он работает для переднего плана и фона. Но когда я создаю тост из powershell. Уведомление не активируется.
Я последовал за шагами в … https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop?tabs=msix-sparse
Я также проверил и могу видеть GUID в реестре.
Репо к образцу приложения — https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast Вам нужно добавить пакет nuget, чтобы он заработал — Microsoft.Инструментарий.Uwp.Уведомления
Сценарий Powershell —
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
$APP_ID = 'DF068783-F662-4A13-8BFC-F8BC1E53F4E6'
$template = @"
<toast activationType="protocol" launch="DF068783-F662-4A13-8BFC-F8BC1E53F4E6WinFormSampleAppActivator" duration="short">
<visual>
<binding template="ToastGeneric">
<image placement="appLogoOverride" src="C:UsersdksilOneDriveDesktopGos.jpg" />
<text><![CDATA[Test]]></text>
<text><![CDATA[some test]]></text>
</binding>
</visual>
<audio src="ms-winsoundevent:Notification.Default" loop="false" />
<actions>
<action activationType="protocol" content="I'm a button" arguments="DF068783-F662-4A13-8BFC-F8BC1E53F4E6" />
</actions>
</toast>
"@
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
$xml.LoadXml($template)
$toast = New-Object Windows.UI.Notifications.ToastNotification $xml
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($APP_ID).Show($toast)
Помощь оценена по достоинству!!!
Ответ №1:
Потратив несколько часов на Google и попробовав чертовски много вещей. Я обнаружил, что проблема была в скрипте Power shell.
Приведенный ниже сценарий PS работает. Если вы можете сказать, почему это работает, но не указано выше, это будет здорово.
$null = [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
$null = [Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime]
$App = "af954980-b64d-4c13-858f-614bcbeb295e_304r6e67w7w2y!App"
[xml]$Toast = @"
<toast duration="short">
<visual>
<binding template="ToastGeneric">
<image placement="appLogoOverride" src="C:UsersdksilOneDriveDesktopGos.jpg" />
<text>Hello</text>
<text>Deepak Dash</text>
</binding>
</visual>
<audio src="ms-winsoundevent:Notification.Default" loop="false" />
<actions>
<action activationType="Protocol" content="I'm a button" arguments="C:UsersdksilOneDriveDesktopGo" />
</actions>
</toast>
"@
# Load the notification into the required format
$ToastXml = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument
$ToastXml.LoadXml($Toast.OuterXml)
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($App).Show($ToastXml)
Примечание — я также попытался установить $ App как «af954980-b64d-4c13-858f-614bcbeb295e_304r6e67w7w2y!Приложение». Это также не сработало для предыдущего скрипта PS.
Спасибо, Дипак Дэш.