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

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

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

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

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

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

manifest.json ناقص زیر را در نظر بگیرید:

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

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

WebAPK شامل فیلترهای intent زیر خواهد بود:

<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 کلیک کند، این لینک توسط intent دریافت شده و در برنامه وب پیش‌رونده باز می‌شود.

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

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

manifest.json ناقص زیر را در نظر بگیرید:

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

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

مانند قبل، WebAPK تولید شده شامل یک فیلتر intent خواهد بود، اما با یک ویژگی 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 نصب می‌شود، کروم از پروفایل فعلی برای ذخیره هرگونه داده استفاده می‌کند و این داده‌ها از هم جدا نمی‌شوند. این امر امکان تجربه مشترک بین مرورگر و برنامه نصب شده را فراهم می‌کند. کوکی‌ها به اشتراک گذاشته شده و فعال هستند، هرگونه فضای ذخیره‌سازی سمت کلاینت قابل دسترسی است و سرویس ورکر نصب شده و آماده استفاده است.

به‌روزرسانی WebAPK

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

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

از چه آیکون‌هایی برای ایجاد صفحه شروع استفاده می‌شود؟

توصیه می‌کنیم حداقل دو اندازه برای آیکون‌ها در صفحه شروع در نظر بگیرید: ۱۹۲ پیکسل و ۵۱۲ پیکسل . از شما شنیدیم که آیکون‌های صفحه شروع خیلی کوچک هستند. WebAPK های تولید شده در کروم ۷۱ یا بالاتر، آیکون بزرگتری را در صفحه شروع نشان می‌دهند. تا زمانی که آیکون‌های توصیه شده ارائه شوند، نیازی به انجام کاری نیست.

اگر کاربر قبلاً برنامه بومی سایت را نصب کرده باشد، چه اتفاقی می‌افتد؟

مانند قابلیت افزودن به صفحه اصلی امروز، کاربران قادر خواهند بود سایتی را مستقل از هرگونه برنامه بومی اضافه کنند. اگر انتظار دارید کاربران هر دو را نصب کنند، توصیه می‌کنیم نماد یا نام سایت خود را از برنامه بومی خود متمایز کنید.

آیا اگر کاربر حافظه پنهان کروم را پاک کند، فضای ذخیره‌سازی سایت نصب‌شده من پاک می‌شود؟

بله.

آیا وقتی دستگاه جدیدی تهیه کنم، برنامه دوباره نصب می‌شود؟

در حال حاضر نه، اما فکر می‌کنیم این حوزه مهمی است و در حال بررسی راه‌هایی برای عملی کردن آن هستیم.

مجوزها چگونه مدیریت می‌شوند؟ آیا اعلان کروم را خواهم دید یا اندروید؟

مجوزها همچنان از طریق کروم مدیریت خواهند شد. کاربران پیام‌های کروم برای اعطای مجوزها را مشاهده خواهند کرد و می‌توانند آنها را در تنظیمات کروم ویرایش کنند.

این برنامه روی چه نسخه‌هایی از اندروید کار خواهد کرد؟

برنامه‌های وب پیش‌رونده را می‌توان روی تمام نسخه‌های اندروید که کروم مخصوص اندروید را اجرا می‌کنند، به‌ویژه Jelly Bean و بالاتر، نصب کرد.

آیا این از وب ویو استفاده می‌کند؟

خیر، سایت در نسخه کرومی که کاربر سایت را از آن اضافه کرده است، باز می‌شود.

آیا می‌توانیم فایل‌های APK ایجاد شده را در فروشگاه Play آپلود کنیم؟

خیر. اگر می‌خواهید APK خودتان را آپلود کنید، به Trusted Web Activities مراجعه کنید.

آیا این موارد در فروشگاه Play فهرست شده‌اند؟

خیر. اگر می‌خواهید APK خودتان را برای فهرست شدن در فروشگاه Play آپلود کنید، Trusted Web Activities را بررسی کنید.

من توسعه‌دهنده‌ی یک مرورگر دیگر در اندروید هستم، آیا می‌توانم این فرآیند نصب را بدون مشکل انجام دهم؟

ما در حال کار بر روی آن هستیم. ما متعهد هستیم که این قابلیت را برای همه مرورگرهای اندروید در دسترس قرار دهیم و به زودی جزئیات بیشتری ارائه خواهیم داد.