Edge扩展本机消息传递:UWP应用程序关闭,如果未响应回到Edge浏览器/扩展程序



edge浏览器的每个请求都需要发送相应的响应。如果没有,则伴侣UWP(以及关联的Win32应用程序,如果有)以" SystemPolicy"为原因退出。 为了说明问题,我可以参考SecureInput样本。

    /// <summary>
    /// Receives message from Extension (via Edge)
    /// </summary>
    private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
    {
        AppServiceDeferral messageDeferral = args.GetDeferral();
        try
        {
            if (this.desktopBridgeAppLaunched)
            {
                this.currentConnectionIndex = Int32.Parse(sender.AppServiceName);
                this.desktopBridgeConnection = desktopBridgeConnections[this.currentConnectionIndex];
                // Send message to the desktopBridge component and wait for response
                AppServiceResponse desktopBridgeResponse = await this.desktopBridgeConnection.SendMessageAsync(args.Request.Message);
                await args.Request.SendResponseAsync(desktopBridgeResponse.Message);
            }
            else
            {
                throw new Exception("Failed to launch desktopBridge App!");
            }
        }
        finally
        {
            messageDeferral.Complete();
        }
    }

通过评论称为" sendresponseasync(...)"的行,UWP和Win32 App(passwordInputprotection.exe)由于" onappServicesCanceled(...)"的处理程序被系统policy原因调用,因此退出了。

我理解,在这个特定示例中,不要回复毫无意义。但是我有无需将响应发送回边缘扩展名的方案。相反,我打算使用Win32应用程序中的SendMessageAsync(...)通过UWP应用程序与扩展程序进行通信。

另外,我注意到我在网上发现的本机消息样本将最低的ACK消息发送回UWP的扩展。因此,是通过设计需要发送响应还是我在这里错过了一些响应?

边缘团队已经对此进行了调查,并确认这是其中一个组件中的错误。他们正在为下一个更新进行修复。直到修复程序已解开之前,您将需要始终发送响应。

感谢您报告该问题,并为此带来的不便感到抱歉!

相关内容

  • 没有找到相关文章

最新更新