WebAPK على Android

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

إنّ تثبيت تطبيق ويب تقدّمي (PWA) على Android لا تقتصر على إضافة تطبيق الويب التقدّمي (PWA) إلى الشاشة الرئيسية للمستخدم. ينشئ 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 التي سيتعامل معها التطبيق، وعناوين 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 وسنعلن قريبًا عن المزيد من التفاصيل.