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

سيتضمّن 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 الذي تم إنشاؤه intent filter، ولكن مع سمة 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 أو الإصدارات الأحدث رمزًا أكبر على شاشة البداية. ليس عليك اتّخاذ أي إجراء طالما أنّك وفّرت الرموز المقترَحة.

ماذا يحدث إذا كان المستخدم قد ثبّت تطبيق الموقع الإلكتروني الأصلي؟

وكما هو الحال مع ميزة &quot;الإضافة إلى الشاشة الرئيسية&quot; الحالية، سيتمكّن المستخدمون من إضافة موقع إلكتروني مستقل عن أي تطبيقات أصلية. إذا كنت تتوقّع أن يثبّت المستخدمون كلاً منهما، ننصحك بتمييز رمز موقعك الإلكتروني أو اسمه عن تطبيقك الأصلي.

هل ستتم محو مساحة تخزين الموقع الإلكتروني المثبَّت إذا محا المستخدم ذاكرة التخزين المؤقت في Chrome؟

نعم.

هل سيتم إعادة تثبيت تطبيقي عند الحصول على جهاز جديد؟

لا يمكن ذلك حاليًا، ولكنّنا نرى أنّ هذا المجال مهم ونبحث عن طرق لإتاحته.

كيف يتم التعامل مع الأذونات؟ هل ستظهر لي رسالة المطالبة من Chrome أو Android؟

سيظلّ بإمكانك إدارة الأذونات من خلال Chrome. ستظهر للمستخدمين طلبات من Chrome لمنح الأذونات، وسيتمكّنون من تعديلها في إعدادات Chrome.

ما هي إصدارات Android التي ستعمل عليها هذه الميزة؟

يمكن تثبيت تطبيقات الويب التقدّمية على جميع إصدارات Android التي تعمل عليها &quot;Chrome لنظام Android&quot;، وتحديدًا الإصدار Jelly Bean والإصدارات الأحدث.

هل تستخدم هذه الطريقة WebView؟

لا، يفتح الموقع الإلكتروني في إصدار Chrome الذي أضاف المستخدم الموقع الإلكتروني منه.

هل يمكننا تحميل حِزم APK التي تم إنشاؤها إلى "متجر Google Play"؟

لا، إذا أردت تحميل حزمة APK الخاصة بك، يمكنك الاطّلاع على أنشطة الويب الموثوقة.

هل تم إدراجها في "متجر Google Play"؟

لا، إذا كنت تريد تحميل حزمة APK الخاصة بك لإدراجها في &quot;متجر Play&quot;، يمكنك الاطّلاع على أنشطة الويب الموثوقة.

أنا مطوّر متصفّح آخر على Android، هل يمكنني الاستفادة من عملية التثبيت السلسة هذه؟

نحن نعمل على حلّ المشكلة. نحن ملتزمون بإتاحة هذه الميزة على جميع المتصفحات على أجهزة Android، وسنقدّم المزيد من التفاصيل قريبًا.