如何在 UWP 应用的 XAML Webview 中添加对 HTML5 通知的支持?
Posted
技术标签:
【中文标题】如何在 UWP 应用的 XAML Webview 中添加对 HTML5 通知的支持?【英文标题】:How to add support for HTML5 notifications in XAML Webview in a UWP app? 【发布时间】:2019-12-20 02:22:37 【问题描述】:所以我在我的 UWP 应用程序中使用WebView
,我想处理html5 notifications。我所做的是将ScriptNotify
事件的支持添加到我的webview (here)。
MyWebView.ScriptNotify += WebView_Notify;
private void WebView_Notify(object sender, NotifyEventArgs e)
Debug.WriteLine("NOTIFIED " + e.Value);
然后使用InvokeScriptAsync
我运行了以下javascript代码:
(function()
var N = window.Notification;
window.external.notify(N.permission);
var P = function (title, options)
window.external.notify(title)
;
P.permission = 'granted';
N = P
)();
但是,这不起作用。在我的调试输出中,我确实得到了:
"通知默认值`
这意味着ScriptNotify
处理程序正在被触发。但是,如何在我的应用中实现 HTML5 通知支持?
【问题讨论】:
【参考方案1】:我找到了一个可能对您有所帮助的新解决方案。
页面加载时发起通知请求,WebView可以拦截,使用事件PermissionRequested
。
private void WebView_PermissionRequested(WebView sender, WebViewPermissionRequestedEventArgs args)
if (args.PermissionRequest.PermissionType == WebViewPermissionType.WebNotifications)
args.PermissionRequest.Allow();
你也可以在监听请求时弹出一个窗口,让用户选择是否接受通知。
最好的问候。
【讨论】:
这看起来很棒!但是,我发现了两个主要问题:第一个是重新启动时WebView
不会“记住”之前已授予权限,第二个是我不确定在触发通知时如何拦截。跨度>
关于第一点。是的,每次重启WebView,就相当于新建了一个浏览器,不会保存和记录用户数据。关于第二点,很遗憾,我还没有找到外部拦截触发通知并获取内容的方法。
是的,第一个问题很容易解决,但我仍在寻找第二个问题的解决方案。查看我的尝试here
@daljit97 你能概括一下你是如何解决第一个问题的吗?以上是关于如何在 UWP 应用的 XAML Webview 中添加对 HTML5 通知的支持?的主要内容,如果未能解决你的问题,请参考以下文章
默认情况下如何以全屏模式启动 uwp webview 应用程序