سلام. من در اولین پستم میخوام درباره اضافه کردن Pwa (Progressive Web Application) به پروژه asp.net core برای شما دوستان توضیح بدم.
ابتدا باید پکیج زیر نصب کنید:
WebEssentials.AspNetCore.PWA
سپس سرویس مربوطه در کلاس startup اضافه کنید:
services.AddProgressiveWebApp();
در مرحله بعد فایل manifest.json را در داخل فولدر wwwroot ایجاد کنید و دیتای زیر را در فایل جی سون قرار دهید:
{ "name": "Awesome Application", "short_name": "Awesome", "description": "The most awesome application in the world", "icons": [ { "src": "/img/icon192x192.png", "sizes": "192x192" }, { "src": "/img/icon512x512.png", "sizes": "512x512" } ], "display": "standalone", "start_url": "/" }
این فایل به صورت نمونه هست و باید مقادیر اصلی خودتون در اون ثبت کنید.
طبق گفته منبع اصلی پکیج اقدام دیگری لازم نیس و باید پروژه اجرا کرده و در مرورگر کروم قسمت application بررسی کنید تا دو فایل manifest.json و service worker را تشخیص داده باشه.
اگه این دو فایل به درستی تشخیص داده که به شما تبریک میگم و موفق شده اید که برای پروژه خودتون Pwa راه اندازی کنید، اگر هنوز موفق نشدید هیچ اشکالی نداره، من مشکلاتی که خودم داشتم رو در ادامه با شما به اشتراک میزارم تا راه حل مناسب پیدا کنید
<link rel="manifest" href="/manifest.webmanifest" />
نکته: اگه این تگ بود و همچنان مرورگر تشخیص نمیداد، بهتره که در سورس خودتون این تگ اضافه کنین، حتی بهتره تگ زیر هم اضافه کنید:
<link rel="manifest" href="/manifest.json" />
در نهایت توسط مرورگر در بخش application تشخیص داده میشه
2. اگه فایل service worker تشخیص نداد تگ script زیر هم قبل از تگ بسته شدن body قرار بدید (تگ Script در حالت نمایشی نشون نمیدن بخاطر مسایل امنیتی :) ):
'serviceWorker' in navigator && navigator.serviceWorker.register('/serviceworker')
خب بنظرم همه کارهای لازم انجام دادیم. بهتره تست کنید.
نکته اخر: در زمان دپلوی کردن روی سرور باید حتما Ssl بر روی دامنه مورد نظر تنظیم شده باشه وگرنه بازم هم ویژگی Pwa برای شما اجرا نخواهد شد.
امیدوارم این پست براتون مفید بوده باشه. هرجا که براتون مبهم بود حتما کامنت بزارید، من در اولین فرصت پاسخ میدم.
منبع:
https://github.com/madskristensen/WebEssentials.AspNetCore.ServiceWorker
موفق باشید.