【问题标题】:Blazor Web Assembly PWA - Install DialogBlazor Web Assembly PWA - 安装对话框
【发布时间】:2021-05-21 16:02:25
【问题描述】:

在 Blazor Web Assembly PWA 中是否可以添加“安装”对话框提示?类似于 Youtube 音乐的东西

【问题讨论】:

标签: blazor progressive-web-apps blazor-webassembly


【解决方案1】:

粗流是

  • 注册beforeinstallprompt
  • 当该事件触发时,存储该事件以备后用(听起来很奇怪,但您需要它)
  • 调用 Blazor 以显示提示警报
  • 回调 JS 并使用 stashed 事件启动安装过程

注册安装提示通知

window.addEventListener('beforeinstallprompt', function (e) {
    e.preventDefault();
    // Stash the event so it can be triggered later.
    // where you store it is up to you
    window.PWADeferredPrompt = e;
    // Notify C# Code that it can show an alert 
    // MyBlazorInstallMethod must be [JSInvokable]
    DotNet.invokeMethodAsync("MyBlazorAssembly", "MyBlazorInstallMethod");
});

然后,此 C# 方法可以显示警报,说明用户可以安装为桌面应用程序并提供安装/取消按钮。

注册一个可以从 Blazor/C# 调用的 JS 函数

window.BlazorPWA = {
    installPWA: function () {
        if (window.PWADeferredPrompt) {
            // Use the stashed event to continue the install process
            window.PWADeferredPrompt.prompt();
            window.PWADeferredPrompt.userChoice
                .then(function (choiceResult) {
                    window.PWADeferredPrompt = null;
                });
        }
    }
};

Blazor 代码

[JSInvokable]
public async Task MyBlazorInstallMethod()
{
  // show an alert and get the result
  ...
  // tell browser to install
  if (UserChoseInstall)
  {
    await jSRuntime.InvokeVoidAsync("BlazorPWA.installPWA");
  }
}

【讨论】:

  • 嗨,你能分享一个简单的解决方案吗?我试着把你的代码放进去,但我的互操作失败了,说它找不到 installPWA
  • @Quinton 你最好针对你的具体问题提出一个新问题
猜你喜欢
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2021-05-27
  • 2020-12-22
  • 2022-10-13
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多