WebAPK على Android

عندما يضيف المستخدم تطبيق الويب التقدّمي إلى شاشته الرئيسية على جهاز Android، ينشئ Chrome تلقائيًا حزمة APK لك، نسمّيها أحيانًا WebAPK. يتيح لك تثبيت التطبيق من خلال حزمة APK ظهوره في مشغّل التطبيقات وفي إعدادات التطبيقات على Android، كما يتيح لك تسجيل مجموعة من فلاتر الأهداف.

يؤدي تثبيت تطبيق ويب تقدّمي على Android إلى إجراء أكثر من مجرد إضافة تطبيق الويب التقدّمي إلى شاشة المستخدم الرئيسية. ينشئ Chrome حزمة APK خاصة لتطبيقك ويثبتها تلقائيًا. ونشير أحيانًا إلى هذه الحزمة باسم WebAPK. يتيح التثبيت من خلال حزمة APK لتطبيقك الظهور في مشغّل التطبيقات وفي إعدادات التطبيقات على Android وتسجيل مجموعة من فلاتر الأهداف.

لإنشاء حزمة WebAPK، يفحص Chrome بيان تطبيق الويب وغيرها من البيانات الوصفية. عند رصد تحديث للبيان، سيحتاج Chrome إلى إنشاء حِزمة APK جديدة.

فلاتر الأهداف في Android

عند تثبيت تطبيق ويب متقدّم على Android، سيُسجِّل مجموعة من فلاتر الأهداف لجميع عناوين URL ضمن نطاق التطبيق. وعندما ينقر المستخدم على رابط ضمن نطاق التطبيق، سيتم فتح التطبيق بدلاً من فتحه داخل علامة تبويب المتصفّح.

راجِع manifest.json الجزئي التالي:

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

عند تشغيل تطبيق ويب يستخدم هذه الميزة من مشغِّل التطبيقات، سيتم فتحه https://example.com/ كتطبيق مستقل بدون أي متصفّح Chrome.

سيتضمّن 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/ كتطبيق مستقل، بدون أي متصفّح Chrome.

كما في السابق، سيتضمّن 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 التي يتم إنشاؤها في الإصدار 71 من Chrome أو الإصدارات الأحدث ستعرض رمزًا أكبر على شاشة البداية. وليس عليك اتّخاذ أي إجراء طالما تم توفير الرموز المقترَحة.
ماذا يحدث إذا سبق للمستخدم تثبيت التطبيق الأصلي للموقع الإلكتروني؟
مثل ميزة "الإضافة إلى الشاشة الرئيسية" المتاحة حاليًا، سيتمكّن المستخدمون من إضافة موقع إلكتروني مستقل عن أي تطبيقات أصلية. إذا كنت تتوقع أن يتم تثبيت التطبيقَين على الأجهزة، ننصحك بالتمييز بين رمز موقعك الإلكتروني أو اسمه ورمز تطبيقك الأصلي.
هل سيتم محو مساحة التخزين الخاصة بالموقع الإلكتروني المثبَّت إذا محو المستخدم ذاكرة التخزين المؤقت في Chrome؟
نعم.
هل ستتم إعادة تثبيت تطبيقي عند الحصول على جهاز جديد؟
ليس في الوقت الحالي، ولكنّنا نعتقد أنّه مجال مهم ونحن نبحث عن طرق لتنفيذه.
كيف يتم التعامل مع الأذونات؟ هل ستظهر لي رسالة المطالبة من Chrome أم من Android؟
ستظلّ الأذونات مُدارة من خلال Chrome. ستظهر للمستخدمين طلبات Chrome لمنح الأذونات، وسيتمكنون من تعديلها في Chrome الإعدادات.
ما هي إصدارات Android التي يمكن استخدام هذه الميزة عليها؟
يمكن تثبيت تطبيقات الويب التقدّمية على جميع إصدارات Android التي تعمل بتطبيق Chrome لنظام التشغيل Android، وتحديدًا الإصدار Jelly Bean والإصدارات الأحدث.
هل يستخدم هذا WebView؟
لا، يتم فتح الموقع الإلكتروني في إصدار Chrome الذي أضاف المستخدم الموقع منه.
هل يمكننا تحميل حِزم APK التي تم إنشاؤها إلى "متجر Play"؟
لا، إذا أردت تحميل ملف APK الخاص بك، يمكنك الاطّلاع علىالنشاطات الموثوق بها على الويب.
هل تم إدراج هذه التطبيقات في "متجر Play"؟
لا، إذا أردت تحميل حزمة APK الخاصة بك لإدراجها في "متجر Play"، يُرجى الاطّلاع على النشاطات الموثوق بها على الويب.
أنا مطوّر متصفّح آخر على Android، هل يمكنني الحصول على عملية التثبيت السلسة هذه؟ :
نعمل حاليًا على حلّ المشكلة. ونحن ملتزمون بإتاحة ذلك لجميع المتصفحات على نظام التشغيل Android، وسيتوفر لدينا المزيد من التفاصيل قريبًا.