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، وسنقدّم المزيد من التفاصيل قريبًا.