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
相关产品推荐
相关产品推荐

