1
3

Blazor Wasm でない ASP.NET Core アプリを PWA 化する

Posted at

やりたいこと

  • ASP.NET Core で作った Web アプリを PWA 化する
  • Blazor Wasm は使わない

環境

  • Visual Studio Community 2022
    • Version 17.11.2
  • .NET 8(C#12)

使うパッケージ

WebEssentials.AspNetCore.PWA

JavaScript の実装なしに C# のみで実現できます。設定方法もここに書いてある通りにやればOKです。

やったこと

ASP.NET Core MVC アプリの PWA 化

ASP.NET Core MVC アプリケーションの作成

テンプレートプロジェクトを追加します。
image.png

実行してみましょう。
image.png

NuGet パッケージの追加

NuGet パッケージの管理から WebEssentials.AspNetCore.PWA をインストールします。
image.png

アイコンファイルを追加

  1. icon192x192 と icon512x512 ふたつのファイルを用意します
    1. jpeg/png
    2. ファイル名は調整できます
  2. wwwroot/img に配置します
    1. 場所は調整できます

image.png

マニフェストファイルを追加

  • wwwrootmanifest.json を追加します
manifest.json
{
  "name": "<アプリ名>",
  "short_name": "<アプリ名の短縮形>",
  "description": "<アプリの説明>",
  "icons": [
    {
      "src": "/img/icon192x192.png",
      "sizes": "192x192"
    },
    {
      "src": "/img/icon512x512.png",
      "sizes": "512x512"
    }
  ],
  "display": "standalone",
  "start_url": "/"
}

Program.cs で設定

Program.cs
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();
+builder.Services.AddProgressiveApp();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

デバッグ実行

アドレスバーにインストールボタンが追加されました!
image.png

アイコンとアプリ名が表示されるのでインストールを選択します。
image.png

インストールされました。ブラウザの要素がなくなり、まるでネイティブアプリのようです。
image.png

タスクバーにピン止めもできます。
image.png

ASP.NET Core Web アプリ(Razor Pages)

ASP.NET Core Web アプリ でも同様に PWA 化できますが、少し手を加える必要があるようです。

image.png
以下のようにマニフェストファイルを指定してやることでインストールボタンが現れました。

<head>
    :
+    <link rel="manifest" href="/manifest.json">
</head>

image.png

まとめ

Blazor Wasm プロジェクトでは標準で PWA 化することができますが、ASP.NET Core Web アプリでも簡単に PWA 化することができました。PWA 化することで Web アプリをネイティブアプリのように使うことができます。オフライン時の表示など課題はありますが、本当に簡単に実現できました。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3