インストール可能なアプリ(PWA)
cMindは電話またはデスクトップにネイティブアプリのようにインストールできます — ホーム画面アイコン、スタンドアローンウィンドウ、スプラッシュ、フレンドリーなオフラインページ。モバイルファーストで完全にレスポンシブ; ui-guidelines.mdを参照。
ここで「インストール可能」が意味する内容 — と正直な制限
Blazor ServerはライブSignalRサーキット経由でレンダリングするため、 앱は完全にオフラインで実行できません。PWAが提供するもの:
- インストール可能 — 有効なweb manifest + アイコン поэтому ブラウザがInstall / ホーム画面に追加を提供。
- アプリシェルキャッシュ — サービスワーカーが静的アセット(CSS、アイコン、manifest)をキャッシュし、ネットワークがドロップしたときにオフラインpageを表示、而非ブラウザエラー。
- ネイティブ感 — スタンドアローンディスプレイ、品牌theme-color/ステータスバー、 app icon、iOSホーム画面アイコン。
オフラインインタラクティブを提供しません — それはBlazor WebAssembly(別個の futureトラック)を必要とします。ライブ機能のオフライン使用を約束しないでください。
ピース
| ピース | 場所 |
|---|---|
| Manifest(動的、品牌) | Web/Endpoints/PwaEndpoints.cs → GET /manifest.webmanifest(匿名) |
| アイコン(192、512、512-maskable、apple-touch-180) | Web/wwwroot/icons/ |
| Service worker(app-shell) | Web/wwwroot/service-worker.js |
| オフラインfallbackページ | Web/wwwroot/offline.html |
| 登録 + iOSタグ + install-promptキャプチャ | Web/Components/App.razor |
| ルート定数 | Core.Constants.PwaRoutes |
Manifest
BrandingOptionsから動的に提供服务 因此 再販者の商品名、色、アイコンがインストール済みアプリに継承:name/short_nameはProductNameから、description、theme_colorはAppBarColorから、background_colorはBackgroundColorから、display: standalone、アイコンセット(を含む maskable 512 forクリーンなAndroidアイコン)。匿名 — インストールプロンプトはサインイン前に動作する必要があります。
Service worker
App-shellのみ。Blazorサーキット(/_blazor)、フレームワーク(/_framework)、SignalRハブ(/hubs)を決して傍受しません — これらは常にネットワーク。ナビゲーションはネットワークファーストでオフラインpage as fallback;静的アセット(/css、/icons、/_content)はバックグラウンドrevalidateでキャッシュファースト。updateViaCache: 'none'で登録因此 ワーカー更新が確実に適用。キャッシュはバージョン管理されています(cmind-shell-v<n>)— シェル変更時にバンプ。
iOS
iOSはmanifestアイコン/splashを無視するため、App.razorは代わりにapple-touch-iconとapple-mobile-web-app-* metaタグも emitします。iOSにはbeforeinstallpromptがありません; ユーザーはSafariのホーム画面に追加からインストールします。beforeinstallpromptはChromium/Androidでwindow.deferredInstallPromptにキャプチャされ、カスタムインストール機能を提供します。
テスト
- E2E —
E2ETests/PwaTests.cs: manifestがapplication/manifest+jsonで提供、非空アイコン(maskableも含む)、display: standalone、apple-touch-iconリンク付き、サービスワーカーが登録 + アクティブ化。MobileLayoutTests/MobileDialogTestsはPWAがインストールするモバイルシェルをカバー。