در حالی که برخی از قابلیتهای PWA مانند Notifications API که به یک برنامه وب اجازه میدهد اعلانهای پلتفرم را دریافت و منتشر کند، معمولاً شناخته شده هستند، تعدادی ویژگی جدید و در شرف ظهور وجود دارد که برای قدرتمندتر کردن برنامههای شما به وب میآیند. پروژه Chromium Web Capabilities که با نام Project Fugu 🐡 نیز شناخته میشود، تلاشی برای فعال کردن استانداردهای جدید و قدرتمند وب است، در حالی که آنچه وب را منحصر به فرد میکند را حفظ میکند: امنیت کاربر محور، اصطکاک کم و سازگاری بین پلتفرمی.
پر کردن شکاف برنامه
بیشتر این قابلیتها حول محور پر کردن شکاف بین برنامههای سنتی دسکتاپ یا موبایل و برنامههای وب ساخته شدهاند، و اولین قابلیتهای اصلی که ارائه میشوند به برنامههای وب اجازه میدهند به گزینههای انتخاب مخاطب و قابلیتهای اشتراکگذاری پلتفرم دسترسی داشته باشند، و PWAهای نصبشده را برای ثبت نام به عنوان یک هدف اشتراکگذاری پلتفرم و نمایش نشانهای آیکون ، که چند نمونه از آنها هستند ، نصب کنند.
هر قابلیت از یک فرآیند استانداردسازی گسترده عبور میکند تا بازخورد جامعه را برای کمک به شکلدهی API و اطمینان از ایمن، خصوصی و قابل اعتماد بودن طراحی نهایی دریافت کند. قابلیتهای جدید در یک ردیاب باز ردیابی میشوند و میتوانند به یکی از پنج دسته زیر تقسیم شوند:
ارسال شد
برای استفاده در آخرین نسخه پایدار کروم موجود است. در صورتی که کاربرد آن به درستی تشخیص داده شود، میتوان با اطمینان از آن استفاده کرد.
محاکمه در مبدا
به عنوان یک نسخه آزمایشی (OT) کروم در دسترس است که به تیم کروم اجازه میدهد ویژگیها و APIهای آزمایشی را در دنیای واقعی اعتبارسنجی کند و به شما امکان میدهد در مورد قابلیت استفاده و اثربخشی API بازخورد ارائه دهید. OTها اختیاری هستند و به شما امکان میدهند این قابلیت را بدون نیاز به فعال کردن هیچ پرچم خاصی در مرورگر خود، با کاربران خود در نسخه بتا آزمایش کنید. APIها ممکن است پس از یک OT تغییر کنند و تضمین میشود که OTها برای مدتی قبل از راهاندازی در دسترس نباشند، بنابراین نباید به عنوان یک مکانیسم راهاندازی اولیه برای APIهای جدید در نظر گرفته شوند.
در مرحله آزمایشی توسعهدهندگان
در کروم، پشت یک پرچم (flag) موجود است. این APIها آزمایشی هستند و هنوز در حال توسعهی فعال میباشند. آنها برای استفاده در محیط عملیاتی آماده نیستند و احتمال زیادی وجود دارد که اشکالاتی وجود داشته باشد و APIها تغییر کنند. در حالی که توسعهدهندگان میتوانند از این زمان برای آزمایش ویژگیهای آزمایشی خود استفاده کنند، نباید به کاربران خود دستور دهند که پرچمها را برای استفاده از ویژگیهایشان فعال کنند.
شروع شد
توسعه آغاز شده است، اما در حال حاضر هیچ API قابل استفادهای وجود ندارد.
در دست بررسی
APIهایی که کاربران به آنها ابراز علاقه کردهاند، اما پیادهسازی آنها هنوز شروع نشده است. اگر APIای هنوز شروع نشده است، لطفاً آن را ستارهدار کنید یا موارد استفاده خود را به مشکل آن اضافه کنید تا به تیم Chromium در اولویتبندی آن کمک کنید.
بهبود PWA شما
هنگام ساخت PWA خود، پیادهسازی APIها و بهترین شیوههای زیر را برای بهبود چشمگیر حس و حال برنامه وب خود در نظر بگیرید. برنامه شما، بسته به مورد استفاده عمومی، ممکن است از یک یا چند API برای بهبود تجربه کلی کاربر بهرهمند شود. APIهایی که با 🔮 مشخص شدهاند، در نسخه آزمایشی اصلی هستند، آنهایی که با 🚩 مشخص شدهاند، در نسخه آزمایشی توسعهدهندگان هستند، آنهایی که با 📱 مشخص شدهاند، در حال حاضر روی موبایل پایدار هستند و پیادهسازی دسکتاپ آنها آغاز شده است، و هر API دیگری که ذکر شده پایدار است (اگرچه احتمالاً در همه پلتفرمها در دسترس نیست). فقط APIهایی که در نسخههای پایدار، بتا (مشخص شده با β ) یا قناری (مشخص شده با α ) فعلی کروم موجود هستند، گنجانده شدهاند. انتظار داشته باشید که این لیست به طور منظم بهروزرسانی شود تا APIهای منتشر شده را منعکس کند.
نصب برنامه
اگر میخواهید برنامه وب شما در کنار سایر برنامههای نصب شده، مانند نوار وظیفه، لانچر، دسکتاپ و تعویض برنامه، در دسترس باشد، پیادهسازی APIهای زیر را در نظر بگیرید تا PWA شما قابل نصب باشد. (اختیاری) از این codelab پیروی کنید.
- مانیفست برنامه وب - اطلاعاتی در مورد برنامه وب خود به مرورگر و سیستم عامل ارائه دهید، به عنوان مثال نام، لوگو، آدرس اینترنتی (URL) برای شروع برنامه و نحوه نمایش برنامه وب شما.
- سرویس ورکرها و API ذخیرهسازی کش - به برنامه وب شما اجازه میدهد تا یک سرور پروکسی ایجاد کند و نحوه مدیریت کش مرورگر را کنترل کند. یک سرویس ورک که به رویداد واکشی مرورگر واکنش نشان میدهد و میتواند به درخواست واکشی برای URL شروع مشخص شده در مانیفست برنامه وب با محتوا در حالت آفلاین پاسخ دهد، از الزامات قابل نصب بودن است.
- اجرا هنگام ورود 🚩β - به شما امکان میدهد PWA خود را طوری پیکربندی کنید که هنگام ورود کاربر به سیستم، بهطور خودکار اجرا شود.
- میانبرهای آیکون برنامه - با برنامه وب خود، از منوی زمینه آیکون برنامه نصب شده خود (مثلاً نگه داشتن طولانی روی دستگاههای تلفن همراه، کلیک راست روی دسکتاپ) و در پلتفرمهای پشتیبانی شده، میانبرهایی برای URLهای خاص (مثلاً شروع چت، آپلود عکس و غیره) ایجاد کنید.
- getInstalledRelatedApps - به برنامه وب شما اجازه میدهد تا بررسی کند که آیا PWA، برنامه اندروید یا برنامه ویندوز (UWP) شما قبلاً نصب شده است یا خیر.
تطبیقی و قابل دسترس
اگر میخواهید برنامه وب شما توسط کاربرانی با دستگاههای مختلف و نیازهای جسمی و/یا روانی متفاوت قابل استفاده باشد، باید موارد زیر را در نظر بگیرید:
- طراحی واکنشگرا - اطمینان حاصل کنید که برنامه وب شما یک تجربه قابل استفاده یا حداقل بدون نقص را برای اندازههای مختلف صفحه نمایش ارائه میدهد تا کاربران با دستگاهها و موقعیتهای مختلف پنجره بتوانند از برنامه شما استفاده کنند.
- دستورالعملهای WCAG 2.0 - اطمینان حاصل کنید که برنامه وب شما توسط افرادی با طیف وسیعی از تواناییهای جسمی و ذهنی قابل استفاده است، نه فقط افراد دارای سیستم عصبی طبیعی و افراد دارای توانایی جسمی. همچنین به بایدها و نبایدهای دولت بریتانیا در مورد طراحی برای دسترسیپذیری مراجعه کنید.
کسب درآمد و توزیع
- پرداختهای وب - رابط کاربری انعطافپذیر و استاندارد برای پرداختهای آنلاین که برای کار بر روی هر مرورگر یا دستگاهی و با هر ارائهدهنده خدمات پرداخت یا پرداخت در نظر گرفته شده است.
- رابط برنامهنویسی کاربردی کالاهای دیجیتال 🔮 - رابط کاربری انعطافپذیر و استاندارد برای جستجو و مدیریت خریدهای درونبرنامهای از برنامههای وب، شامل پشتیبانی از انواع خریدهای رایج مانند خریدهای یکباره، خریدهای تکرارپذیر (مانند جواهرات/ارز درون بازی) و اشتراکها. این رابط با پرداختهای وب کار میکند.
- فعالیت وب قابل اعتماد - یک برنامه اندروید برای PWA خود ایجاد کنید تا بتوان آن را برای دانلود در فروشگاههای سازگار، به عنوان مثال Google Play، فهرست کرد.
دسترسی به کلیپبورد
- کلیپبورد ناهمگام - متن و تصاویر را در کلیپبورد کاربر بخوانید و بنویسید، و به رویدادهای کپی و چسباندن از طرف کاربر گوش دهید.
اعلانها
اگر برنامه وب شما نیاز به اطلاع رسانی به کاربران دارد، به عنوان مثال یک برنامه چت یا رمزگذاری پس زمینه که روی آن کار میشود، میتوانید پیادهسازی API های زیر را در نظر بگیرید:
- اعلانهای وب - هنگامی که کاربر انتخاب کرد، به برنامه وب شما اجازه میدهد اعلانها را به او ارسال کند.
- API نشانگذاری - به برنامه وب نصبشده شما اجازه میدهد تا یک نشان در سطح برنامه را روی آیکون برنامه تنظیم کند، که میتواند به صورت اختیاری با یک عدد باشد.
- فعالکنندههای اعلان 🔮 - ارسال اعلان به کاربران در صورت برآورده شدن شرایط فعالکننده، مثلاً مبتنی بر زمان یا مبتنی بر مکان (مانند اعلانهای رویدادهای تقویم)
اشتراکگذاری قصد و مدیریت پروتکل
- ثبت پروتکل URL 🚩α - به برنامههای وب این امکان را میدهد که با استفاده از مانیفست نصب خود، خود را به عنوان کنترلکننده پروتکلها/طرحهای URL سفارشی ثبت کنند.
- اشتراکگذاری وب - از رابط کاربری اشتراکگذاری سیستمی داخلی در دستگاههای پشتیبانیشده برای اشتراکگذاری URLها، متن و فایلها با سایر برنامههای نصبشده روی دستگاهشان استفاده کنید. برنامه شما نیازی به نصب ندارد.
- هدف اشتراکگذاری وب - PWA نصبشده خود را در رابط کاربری اشتراکگذاری سیستم داخلی در دستگاههای پشتیبانیشده در دسترس قرار دهید تا کاربران بتوانند متن و فایلها را از برنامههای دیگر با برنامه شما به اشتراک بگذارند.
باز کردن و ذخیره فایلها
- API مدیریت فایل 🚩 - برنامه وب نصب شده خود را طوری تنظیم کنید که توانایی مدیریت (خواندن/پخش/ویرایش) فایلها با انواع MIME و/یا پسوندهای فایل داده شده را در سیستم عامل ثبت کند، به عنوان مثال، این امکان را فراهم میکند که آنها به عنوان یک گزینه در فهرست «باز کردن با برنامه…» در منوی زمینه قرار گیرند.
- API دسترسی به سیستم فایل - دسترسی قوی به سیستم فایل کاربر در هر جلسه، که امکان تعاملات زیر را فراهم میکند (در صورت نیاز برنامه شما)
- خواندن فایلها از سیستم فایل محلی - یک انتخابگر فایل را نشان میدهد و به کاربر اجازه میدهد یک یا، به صورت اختیاری، چندین فایل را برای باز کردن انتخاب کند، از جمله محدود کردن انواع فایلهای مجاز بر اساس نوع MIME و پسوند.
- ذخیره تغییرات در فایل باز - تغییرات را مستقیماً در فایلی که با FSA باز شده است ذخیره کنید، بدون اینکه از کاربر بخواهید محل ذخیره فایل را انتخاب کند یا از او بخواهید یک نسخه از آن را دانلود کند.
- ایجاد یک فایل جدید در سیستم فایل محلی - به کاربر اجازه دهید یک فایل جدید، به صورت اختیاری با پسوند فایل پیشفرض، در سیستم فایل محلی خود ایجاد کند که برنامه شما سپس به آن دسترسی داشته باشد تا آن را ذخیره کند.
- فایلهای اخیراً باز شده - کنترلکنندههای فایل ایجاد شده با FSA میتوانند در IndexedDB ذخیره شوند که به شما امکان میدهد لیستی از فایلهای اخیراً استفاده شده بین جلسات کاربر را نشان دهید (اگرچه مجوزهای ویرایش هنوز بین جلسات ادامه ندارند)
- خواندن، نوشتن و دستکاری یک دایرکتوری - به کاربر اجازه دهید دایرکتوری را در سیستم فایل محلی خود انتخاب کند که برنامه شما بتواند محتویات آن را بخواند، فایلها و زیردایرکتوریها را در آن ایجاد، خوانده و حذف کند و مسیر نسبی فایل درون آن را تعیین کند.
- جریانهای فشردهسازی - فشردهسازی یا خارج کردن از حالت فشرده با استفاده از الگوریتمهای فشردهسازی gzip و deflate .
مدیریت پنجره
- API تمام صفحه - به کاربر اجازه میدهد تا یک عنصر در برنامه وب شما، به عنوان مثال یک ویدیو، تمام صفحه را اشغال کند.
- API قرارگیری پنجره در بین صفحات نمایش 🔮 - به برنامه وب شما اجازه میدهد تا اطلاعاتی در مورد نمایشگرهای متصل دریافت کند و پنجرهها را نسبت به آن نمایشگرها قرار دهد که امکان ایجاد برنامههای وب چند پنجرهای و چند نمایشگری را فراهم میکند.
- حالت نمایش برنامه به صورت تببندی شده 🚩 - به برنامه وب نصب شده خود اجازه دهید در یک یا چند تب نمایش داده شود، نه فقط در یک پنجره.
ادغام عمیقتر سیستم عامل
- API فونتهای محلی 🔮 - به برنامه وب شما اجازه میدهد تا فونتهای نصبشده محلی را فهرست کند و دسترسی سطح پایین (بایتگرا) به کانتینر SFNT را که شامل دادههای کامل فونت است، درخواست کند و به برنامه شما اجازه میدهد تا فونتهای نصبشده محلی را به صورت سفارشی رندر کند.
- قفل بیدارباش - به برنامه وب شما اجازه میدهد تا از به خواب رفتن صفحه نمایش جلوگیری کند و به برنامه وب شما اجازه میدهد تا وظایف طولانی مدت را بدون ترس از وقفه انجام دهد (مثلاً تبدیل کد فایل یا فعال نگه داشتن دستور غذا هنگام آشپزی).
- تشخیص عدم استفاده 🔮 - به برنامه وب شما اجازه میدهد تا تشخیص دهد چه زمانی کاربر به طور فعال از دستگاه خود استفاده نمیکند.
پشتیبانی آفلاین گسترده
اگر میخواهید برنامه وب شما به صورت آفلاین بهتر کار کند، میتوانید پیادهسازی API های زیر را در نظر بگیرید:
- همگامسازی پسزمینه - در حالت آفلاین، درخواستهایی که نیاز به اتصال دارند را در صف قرار دهید و سپس دادههای برنامه وب خود را در پسزمینه، زمانی که شبکه در دسترس است، همگامسازی کنید، به جای اینکه اصلاً درخواستها را به صورت آفلاین پردازش نکنید. به عنوان مثال، اجازه ارسال پیامها یا تغییرات تدریجی در یک سند که هنگام آنلاین شدن همگامسازی میشوند.
- همگامسازی دورهای پسزمینه - به برنامه وب نصبشده و پرکاربرد شما اجازه میدهد تا سرویس ورکر خود را به صورت دورهای، بر اساس حداقل زمان سپریشده، بیدار کند و اجرا کند، برای مثال، یک حافظه پنهان را بهروزرسانی کند و به محتوا اجازه دهد تا زمانی که کاربر برنامه را باز میکند، بهروز باشد.
- API فهرستبندی محتوا - به برنامه وب خود اجازه دهید به مرورگر بگوید چه محتوایی به صورت آفلاین در دسترس است تا مرورگر بتواند آن را در معرض دید کاربران قرار دهد.
- واکشی پسزمینه - امکان واکشیهای پسزمینه طولانیمدت، مانند دانلود فیلم یا آپلود ویدیو و تصاویر، را بدون خطر از کار افتادن سرویس ورکر فراهم میکند.
پخش، رمزگذاری و رمزگشایی رسانه
اگر برنامه وب شما فایلهای رسانهای مانند فایلهای ویدیویی یا صوتی را پخش میکند، ممکن است بخواهید پیادهسازی APIهای زیر را در نظر بگیرید:
- پخش تطبیقی - به پخشهای ویدیویی اجازه میدهد تا بر اساس عملکرد شبکه، نرخ بیت را تغییر دهند.
- تصویر در تصویر - به کاربر اجازه میدهد ویدیو را از برنامه وب شما در یک پنجره همیشه در بالا نمایش دهد، که سپس میتواند به طور مستقل جابجا و تغییر اندازه دهد.
- رابط برنامهنویسی کاربردی جلسه رسانه - به کاربر اجازه میدهد تا پخش رسانه را برای برنامه وب شما با استفاده از سختافزار و قابلیتهای نرمافزاری سطح سیستم عامل (مانند دکمههای پخش/مکث/توقف در صفحه کلید یا روی صفحه قفل) کنترل کند، و همچنین اعلانهای رسانهای سطح سیستم عامل (مانند عنوان، هنرمند، آلبوم و آثار هنری) را کنترل کند.
- Chromecast API - به کاربر اجازه میدهد تا رسانه را به یک گیرنده Chromecast موجود ارسال کند، برای مثال، ویدیویی را از برنامه وب شما در تلویزیون خود پخش کند.
- کدکهای وب 🔮 - دسترسی به رمزگذارها و رمزگشاهای رسانهای سختافزاری و نرمافزاری داخلی، که هم برای موارد استفاده بلادرنگ مانند پخش زنده با تأخیر کم و هم برای رمزگذاری، رمزگشایی و تبدیل کد فایلها مفید است.
پشتیبانی ورودی گسترده
- رویدادهای اشارهگر - با استفاده از یک API واحد، به رویدادهای لمسی، قلم نوری و ماوس واکنش نشان دهید و گزینههای ورودی بیشتری را برای کاربران خود فراهم کنید. همچنین به بهترین شیوهها برای رابطهای کاربری لمسی و ورودی و کنترلهای کاربر مراجعه کنید.
- API گیمپد - به برنامه وب شما اجازه میدهد تا به ورودیهای گیمپدهای رایج پاسخ دهد.
- Web HID 🚩 - به برنامه وب شما اجازه میدهد تا به دستگاههای رابط انسانی غیر استاندارد (مانند کنترلرهای سفارشی) دسترسی پیدا کند.
پشتیبانی پیشرفته از لوازم جانبی
- USB وب - به برنامه وب شما اجازه میدهد تا از طریق برنامه شما به دستگاههای USB غیر استاندارد (مثلاً صفحه کلید و ماوس) دسترسی پیدا کند.
- رابط برنامهنویسی سریال 🔮 - یک رابط برنامهنویسی کاربردی (API) برای ارتباط با دستگاههای سختافزاری از طریق پورت سریال فیزیکی یا مجازی اضافه میکند.
چک لیست PWA شما
آمادهاید تا PWA خود را با این APIهای قدرتمند جدید ارتقا دهید؟ یکی از موارد استفاده زیر را انتخاب کنید تا مجموعهای از APIهای پیشنهادی برای استفاده را ببینید، یا چک لیست خودتان را بسازید و برای تکمیل آن تلاش کنید!