WebAPK ها در اندروید

هنگامی که کاربر برنامه وب پیشرو شما را به صفحه اصلی خود در Android اضافه می کند، Chrome به طور خودکار یک APK برای شما تولید می کند که گاهی اوقات آن را WebAPK می نامیم. نصب از طریق یک APK امکان نمایش برنامه شما در راه‌انداز برنامه، در تنظیمات برنامه Android و ثبت مجموعه‌ای از فیلترهای هدف را فراهم می‌کند.

نصب PWA در اندروید چیزی بیش از افزودن برنامه وب پیشرفته به صفحه اصلی کاربر است. Chrome به طور خودکار یک APK ویژه برنامه شما را تولید و نصب می کند. ما گاهی از این به عنوان WebAPK یاد می کنیم. نصب از طریق یک APK امکان نمایش برنامه شما در راه‌انداز برنامه، در تنظیمات برنامه Android و ثبت مجموعه‌ای از فیلترهای هدف را فراهم می‌کند.

برای ایجاد WebAPK ، Chrome به مانیفست برنامه وب و سایر ابرداده ها نگاه می کند. وقتی به‌روزرسانی مانیفست شناسایی شد، Chrome باید یک APK جدید ایجاد کند.

فیلترهای هدف اندروید

هنگامی که یک برنامه وب پیشرفته در Android نصب می شود، مجموعه ای از فیلترهای هدف را برای همه URL های موجود در محدوده برنامه ثبت می کند. وقتی کاربر روی پیوندی که در محدوده برنامه است کلیک می کند، برنامه به جای باز شدن در برگه مرورگر باز می شود.

manifest.json جزئی زیر را در نظر بگیرید:

"start_url": "/",
"display": "standalone",

وقتی یک برنامه وب با استفاده از آن از راه‌انداز برنامه راه‌اندازی می‌شود، https://example.com/ به‌عنوان یک برنامه مستقل، بدون مرورگر کروم باز می‌کند.

WebAPK شامل فیلترهای هدف زیر است:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/" />
</intent-filter>

اگر کاربر روی پیوندی در یک برنامه نصب‌شده به https://example.com/read کلیک کند، این پیوند توسط هدف گرفته می‌شود و در برنامه وب پیشرفته باز می‌شود.

استفاده از scope برای محدود کردن فیلترهای هدف

اگر نمی‌خواهید برنامه وب پیشرو شما همه URL‌های موجود در سایت شما را مدیریت کند، می‌توانید ویژگی scope به مانیفست برنامه وب خود اضافه کنید. ویژگی scope به Android می‌گوید فقط در صورتی برنامه وب شما را باز کند که URL با origin + scope مطابقت داشته باشد. این به شما امکان می‌دهد تا کنترل کنید کدام URL‌ها توسط برنامه شما مدیریت می‌شوند و کدام یک باید در مرورگر باز شوند. این زمانی مفید است که برنامه خود و سایر محتوای غیر برنامه را در یک دامنه دارید.

manifest.json جزئی زیر را در نظر بگیرید:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

هنگامی که از راه‌انداز برنامه راه‌اندازی می‌شود، https://example.com/app/ به‌عنوان یک برنامه مستقل، بدون مرورگر کروم باز می‌شود.

مانند قبل، WebAPK تولید شده دارای یک فیلتر قصد است، اما با ویژگی متفاوت android:pathPrefix در AndroidManifest.xml APK:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/app/" />
</intent-filter>

بیایید به چند مثال نگاهی بیندازیم:

انجام دهید

https://example.com/app/ - در /app/

انجام دهید

https://example.com/app/read/book - در /app/

نکن

https://example.com/help/ - نه در /app/

نکن

https://example.com/about/ - نه در /app/

برای اطلاعات بیشتر در مورد scope ، وقتی آن را تنظیم نمی‌کنید چه اتفاقی می‌افتد و چگونه می‌توانید از آن برای تعریف محدوده برنامه خود استفاده کنید، scope ببینید.

مدیریت مجوزها

مجوزها مانند سایر برنامه های وب کار می کنند و در زمان نصب نمی توان آنها را درخواست کرد. در عوض، آنها باید در زمان اجرا درخواست شوند، در حالت ایده آل فقط زمانی که واقعاً به آنها نیاز دارید. به عنوان مثال، در اولین بارگذاری اجازه دوربین نخواهید، بلکه منتظر بمانید تا کاربر اقدام به گرفتن عکس کند.

مدیریت فضای ذخیره سازی و وضعیت برنامه

حتی اگر برنامه وب پیشرفته از طریق یک APK نصب شده باشد، Chrome از نمایه فعلی برای ذخیره هر گونه داده استفاده می کند و جدا نمی شود. این امکان یک تجربه مشترک بین مرورگر و برنامه نصب شده را فراهم می کند. کوکی ها به اشتراک گذاشته شده و فعال هستند، هر فضای ذخیره سازی سمت سرویس گیرنده قابل دسترسی است و سرویس دهنده نصب شده و آماده کار است.

به روز رسانی WebAPK

اطلاعات مربوط به نحوه به‌روزرسانی WebAPK به «چگونه Chrome به‌روزرسانی‌های مانیفست برنامه وب را مدیریت می‌کند» منتقل شده است.

سوالات متداول

چه نمادهایی برای تولید صفحه نمایش اسپلش استفاده می شود؟ :
توصیه می کنیم حداقل دو آیکون: 192 پیکسل و 512 پیکسل برای صفحه نمایش اسپلش ارائه کنید. از شما شنیدیم که نمادهای روی صفحه نمایش خیلی کوچک هستند. WebAPKهایی که در Chrome 71 یا جدیدتر ایجاد شده‌اند، نماد بزرگ‌تری را روی صفحه نمایش اسپلش نشان می‌دهند. تا زمانی که آیکون های توصیه شده ارائه شده باشد، هیچ اقدامی لازم نیست.
اگر کاربر قبلاً برنامه بومی سایت را نصب کرده باشد چه اتفاقی می افتد؟
مانند افزودن به صفحه اصلی امروز، کاربران می توانند سایتی مستقل از هر برنامه بومی اضافه کنند. اگر انتظار دارید کاربران به طور بالقوه هر دو را نصب کنند، توصیه می کنیم نماد یا نام سایت خود را از برنامه اصلی خود متمایز کنید.
اگر کاربر حافظه پنهان کروم را پاک کند، فضای ذخیره سازی سایت نصب شده من پاک می شود؟
بله.
آیا با دریافت دستگاه جدید، برنامه من دوباره نصب می شود؟
در حال حاضر نه، اما فکر می‌کنیم که این یک حوزه مهم است و در حال بررسی راه‌هایی برای عملی کردن آن هستیم.
مجوزها چگونه مدیریت می شوند؟ آیا درخواست Chrome یا Android را می بینم؟
مجوزها همچنان از طریق Chrome مدیریت خواهند شد. کاربران درخواست‌های Chrome برای اعطای مجوز را می‌بینند و می‌توانند آن‌ها را در تنظیمات Chrome ویرایش کنند.
این روی چه نسخه هایی از اندروید کار می کند؟
برنامه‌های وب پیشرو را می‌توان بر روی تمام نسخه‌های اندرویدی که Chrome for Android را اجرا می‌کنند، به‌ویژه Jelly Bean و بالاتر نصب کرد.
آیا این از WebView استفاده می کند؟
خیر، سایت در نسخه کروم که کاربر سایت را از آن اضافه کرده باز می شود.
آیا می‌توانیم فایل‌های APK ایجاد شده را در پلی استور آپلود کنیم؟
خیر. اگر می‌خواهید APK خود را آپلود کنید، فعالیت‌های وب مورد اعتماد را بررسی کنید.
آیا اینها در فروشگاه Play فهرست شده اند؟
خیر. اگر می‌خواهید APK خود را برای فهرست کردن در فروشگاه Play آپلود کنید، «فعالیت‌های وب معتمد» را بررسی کنید.
من توسعه دهنده مرورگر دیگری در اندروید هستم، آیا می توانم این روند نصب بدون درز را داشته باشم؟ :
ما روی آن کار می کنیم. ما متعهد هستیم که این را برای همه مرورگرهای اندروید در دسترس قرار دهیم و به زودی جزئیات بیشتری خواهیم داشت.