启用 .Net 本机工具链时 AddWebAllowedObject 不工作

AddWebAllowedObject is not working when .Net Native Tool Chain is Enabled

我创建了嵌入了 webview 的 UWP 应用程序。网络视图加载了网络应用程序的 URL。 Web 应用程序在 window object 中添加了 JavaScript object。 example:window.html_communicator

Web 应用程序使用此 html_communicator object 并调用其上的某些方法以调用 UWP 应用程序上的回调。

例如,可以在 html_communicator 上定义一个名为 onLocationSelect 的方法,网络应用程序将在某些用户交互时调用此方法。 UWP 应用程序通过在 WebView 上调用 addWebAllowedObject 来注册方法。

当我禁用 .Net Native Tool Chain 时,回调工作正常。 但是当启用 .Net Natvie 工具链时,这些回调无法正常工作。

下面是一个 javascript 代码片段,它在单击按钮时调用桥接方法。

var html_communicator = html_communicator || {};
window.onload = function () {
    document.getElementById("locationSelect")
        .addEventListener("click", () => {
            if (html_communicator && html_communicator.onLocationSelect) {
                document.getElementById("msg").innerHTML = `Successfully called bridge method:                             Button clicked at ${new Date()}`;
            sumorea_app.onLocationSelect();
        }
        else {
            document.getElementById("msg").innerHTML = `Failed to call bridge method: Button clicked at ${new Date()}`;
        }
    })
    }

The callbacks are working fine when I disabled .Net Native Tool Chain. But these callbacks are not working fine when .Net Natvie Tool Chain is enabled.

请参考webview官方document另外,WebView中受信任的JavaScript内容可以直接访问WindowsRuntimeAPI。这为 WebView 中托管的 Web 应用程序提供了强大的本机功能。要启用此功能,必须将受信任内容的统一资源标识符 (URI) 添加到 Package.appxmanifest 中应用的 ApplicationContentUriRules 的白名单中,并将 WindowsRuntimeAccess 专门设置为“all”。

对于 Xamarin 解决方案,您需要检查是否已为 UWP 项目添加上述白名单。