【问题标题】:How to add support for HTML5 notifications in XAML Webview in a UWP app?如何在 UWP 应用的 XAML Webview 中添加对 HTML5 通知的支持?
【发布时间】: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 通知支持?

【问题讨论】:

    标签: javascript c# html webview uwp


    【解决方案1】:

    我找到了一个可能对您有所帮助的新解决方案。

    页面加载时发起通知请求,WebView可以拦截,使用事件PermissionRequested

    private void WebView_PermissionRequested(WebView sender, WebViewPermissionRequestedEventArgs args)
    {
        if (args.PermissionRequest.PermissionType == WebViewPermissionType.WebNotifications)
        {
            args.PermissionRequest.Allow();
        }
    }
    

    你也可以在监听请求时弹出一个窗口,让用户选择是否接受通知。

    最好的问候。

    【讨论】:

    • 这看起来很棒!但是,我发现了两个主要问题:第一个是重新启动时WebView 不会“记住”之前已授予权限,第二个是我不确定在触发通知时如何拦截。跨度>
    • 关于第一点。是的,每次重启WebView,就相当于新建了一个浏览器,不会保存和记录用户数据。关于第二点,很遗憾,我还没有找到外部拦截触发通知并获取内容的方法。
    • 是的,第一个问题很容易解决,但我仍在寻找第二个问题的解决方案。查看我的尝试here
    • @daljit97 你能概括一下你是如何解决第一个问题的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2018-02-22
    • 2017-02-18
    相关资源
    最近更新 更多