You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP应用通过Windows通知中心Toast按钮点击启动失败求助

排查Toast按钮无法启动UWP应用的问题

嘿,我一眼就看到你代码里的关键问题啦——你的ToastButton配置里,协议类型的按钮需要传入合法的协议URI,而不是随便的字符串。

咱们一步步拆解问题:

核心问题所在

你当前的ToastButton代码是这样的:

new ToastButton("Like","LikeButton") { ActivationType = ToastActivationType.Protocol, }

这里第二个参数(也就是按钮的Launch属性)传的是"LikeButton",但因为你把ActivationType设为了Protocol,这个参数必须是你在package.manifest里注册过的完整协议URI,系统才能识别并启动对应的UWP应用。"LikeButton"不是有效的协议URI,所以系统不知道该启动哪个应用,自然没反应。

修正方案

1. 先确认协议注册的正确性

首先确保你在package.manifest里的协议配置是正确的,比如:

<Extensions>
  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="launchmyapp"> <!-- 协议名只需写前缀,不用加:// -->
      <uap:DisplayName>我的应用协议</uap:DisplayName>
    </uap:Protocol>
  </uap:Extension>
</Extensions>

注意:协议名不区分大小写,但建议保持前后一致,避免不必要的问题。

2. 修改ToastButton的Launch参数

把按钮的Launch值改成符合你注册协议的完整URI,比如如果要区分是Like按钮触发的,可以加个路径参数:

new ToastButton("Like", "launchMyApp://action/like") 
{ 
    ActivationType = ToastActivationType.Protocol, 
}

这样系统识别到launchMyApp://开头的URI,就会自动启动你注册了该协议的UWP应用。

额外注意点

  • 测试协议是否生效:可以按下Win+R,输入launchMyApp://,如果能直接启动你的应用,说明协议注册没问题;如果不行,先排查manifest的配置。
  • 解析按钮操作:如果你需要知道是哪个按钮触发的启动,可以在URI里加查询参数(比如launchMyApp://?action=like),然后在UWP应用的OnActivated事件里解析这个URI,获取对应的操作指令。

内容的提问来源于stack exchange,提问作者Yogesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:22:48