كيفية استخدام المكوّنات المختلفة لعرض محتوى الويب داخل تطبيقات Android
لقد مرّ أكثر من عشر سنوات على إطلاق نظام Android، ومنذ الأيام الأولى، كان يقدّم دعمًا رائعًا للويب. وكان هذا الإصدار مزوّدًا بـ WebView، وهو مكوّن يسمح للمطوّرين باستخدام الويب داخل تطبيقات Android الخاصة بهم. بالإضافة إلى ذلك، يتيح Android للمطوّرين استخدام محرك المتصفّح الخاص بهم في المنصة، ما يعزّز المنافسة والابتكار.
يمكن للمطوّرين تضمين الويب في تطبيقات Android بعدة طرق. يتم استخدام WebView بشكلٍ متكرّر لعرض الإعلانات، أو كمكوّن تنسيق يُستخدَم مع عناصر واجهة مستخدم Android، أو لحزمة ألعاب HTML 5. تسمح ميزة "علامات التبويب المخصّصة" للمطوّرين بإنشاء متصفّحات داخل التطبيقات وتوفير تجربة تنقّل سلسة إلى محتوى الويب التابع لجهات خارجية، كما تسمح ميزة "النشاط الموثوق على الويب" للمطوّرين باستخدام تطبيقات الويب المتقدّمة (PWAs) في تطبيقات Android التي يمكن تنزيلها من "متجر Play".
Android WebView
يمنح WebView للمطوّرين إمكانية الوصول إلى HTML وCSS وJavaScript الحديثة داخل تطبيقات Android، ويسمح بإرسال المحتوى داخل حزمة APK أو استضافته على الإنترنت. وهي من أكثر مكوّنات Android مرونة وفعالية، ويمكن استخدامها في معظم حالات الاستخدام التي يتم فيها تضمين محتوى الويب في تطبيق Android، بدءًا من تشغيل خدمات الإعلانات مثل AdMob ووصولاً إلى إنشاء ونشر ألعاب HTML5 الكاملة التي تستخدم واجهات برمجة التطبيقات الحديثة مثل WebGL.
ولكن عند استخدامه لإنشاء متصفّح داخل التطبيق أو تضمين تطبيق ويب تقدّمي في تطبيق Android، يفتقر WebView إلى الأمان والميزات والإمكانات التي توفّرها منصة الويب.
تحدّي المتصفّح داخل التطبيق
بمرور الوقت، بدأ المزيد من المطوّرين في إنشاء تجارب متصفّح تهدف إلى دمج محتوى تابع لجهات خارجية في تطبيقات Android، بهدف توفير تجربة أكثر سلاسة للمستخدمين عند الانتقال إلى مواقع إلكترونية تابعة لجهات خارجية. وأصبح يُشار إلى هذه التجارب باسم "المتصفحات داخل التطبيقات".
توفّر WebView توافقًا واسعًا مع حِزم تكنولوجيا الويب الحديثة، كما تتوافق مع العديد من واجهات برمجة تطبيقات الويب الحديثة، مثل WebGL. ولكن WebView هي في الأساس حزمة أدوات لواجهة مستخدِم الويب. ولا يُقصد به - ولا يتيح - استخدام جميع ميزات منصة الويب. قد لا تكون واجهة برمجة التطبيقات متوافقة إذا كانت متوفّرة باستخدام بديل على مستوى نظام التشغيل، مثل Web Bluetooth، أو إذا كانت تتطلّب تنفيذ واجهة مستخدم المتصفّح، مثل الإشعارات الفورية. ومع تطوّر منصّة الويب وإضافة المزيد من الميزات التي كانت متاحة لتطبيقات Android فقط، ستصبح هذه الفجوة أكبر. بما أنّ مطوّري التطبيقات لا يتحكّمون في الميزات التي يتم استخدامها عند فتح محتوى تابع لجهة خارجية، فإنّ WebView ليس خيارًا جيدًا لمتصفّحات داخل التطبيقات أو لفتح تطبيقات الويب التقدّمية. حتى إذا كان WebView يتيح استخدام كل ميزات منصّة الويب، سيظلّ على المطوّرين كتابة الرموز البرمجية وتنفيذ واجهة المستخدم الخاصة بهم لاستخدام ميزات مثل الأذونات أو الإشعارات الفورية، ما يجعل من الصعب تحقيق اتساق في تجربة المستخدمين.
اعتبارات الأمان لاستخدام WebView كمتصفّح داخل التطبيق
يمنح WebView تطبيق المُضمِّن إذن الوصول الكامل إلى المحتوى المعروض، بما في ذلك ملفات تعريف الارتباط و DOM. هذه ميزات فعّالة تتطلّب مستوىً عالٍ من الثقة من المستخدمين.
بما أنّ WebView ليس مخصّصًا لإنشاء متصفّحات، لا يتضمّن ميزات الأمان المتوفّرة في المتصفّحات الحديثة.
بنية العمليات المتعدّدة وعزل المواقع الإلكترونية
تم تصميم المتصفّحات لتكون آمنة أثناء عرض المحتوى غير الموثوق به وتنفيذه. للحفاظ على أمان المستخدم أثناء تصفّحه لمحتوى يُحتمل أن يكون غير موثوق به أو حتى ضارًا، تستخدم المتصفّحات الحديثة تقنيات مثل استخدام بنية متعددة العمليات وعزل المواقع الإلكترونية.
بدون بنية العمليات المتعددة، يمكن أن يؤدي العُطل الذي تسبّبت فيه صفحة الويب إلى تعطُّل تطبيق المتصفّح بالكامل، أو يمكن استغلال ثغرة أمنية للتحكّم في الجهاز بالكامل. تضيف ميزة "عزل المواقع الإلكترونية" طبقة أمان أخرى تصعِّب على المواقع الإلكترونية غير الموثوق بها الوصول إلى المواقع الإلكترونية الأخرى وسرقة المعلومات منها.
حتى إصدار Android 8.0 Oreo، كان عارض WebView يستخدم العملية نفسها التي يستخدمها تطبيق التضمين. في الإصدارات الأحدث من نظام التشغيل، وعندما تكون الأجهزة قادرة بما يكفي، يتم تشغيل أداة التحويل في عملية مختلفة. ومع ذلك، لا تزال عملية واحدة مشترَكة بين جميع الصفحات ومثيلات WebView التي تعمل عليها، ما يجعل من المستحيل تنفيذ ميزة عزل الموقع بالكامل.
لا يشكّل عدم توفّر بنية متعددة العمليات وعزل المواقع الإلكترونية مشكلة للتطبيقات التي تعرِض محتوًى تملكه وتثق به، ولكن يمكن أن يشكّل ذلك مشكلة للتطبيقات التي تعرض محتوًى تابعًا لجهات خارجية غير موثوق بها، مثل المتصفّحات داخل التطبيقات، ما يعرّض المستخدمين للتعرّض للثغرات الأمنية، مثل Meltdown وSpectre، والتي يمكن استخدامها لسرقة ملفات تعريف الارتباط والتفاصيل المصرفية وغيرها من المعلومات الشخصية.
مؤشرات واجهة المستخدم الآمنة
من المهم أيضًا توفير مؤشرات أمان جيدة للمستخدمين، وتبذل المتصفّحات الكثير من الجهد في تطوير هذه المؤشرات باستمرار. ومع ذلك، لا يتضمّن WebView واجهة برمجة تطبيقات للتحقّق مما إذا كان اتصال الموقع الإلكتروني آمنًا، ما يسمح لمطوّري التطبيقات بإنشاء مؤشرات أمن موثوق بها. قد يؤدي عدم توفّر واجهة برمجة تطبيقات كهذه، على سبيل المثال، إلى عدم مطابقة عنوان URL المعروض في شريط العناوين للصفحة المعروضة للمستخدم، حتى عند إجراء عمليات اتصال آمنة عبر بروتوكول HTTPS.
يتوفّر للمطوّرين خيار آخر وهو تضمين محرّك متصفّح في تطبيقاتهم. بالإضافة إلى أنّ هذا النهج يؤدي إلى زيادة حجم التطبيق، فهو معقّد ويستغرق وقتًا طويلاً.
علامات التبويب المخصّصة كحلّ للمتصفّحات داخل التطبيقات
تم طرح ميزة "علامات التبويب المخصّصة" في الإصدار 45 من Chrome، وهي تتيح للمطوّرين استخدام علامة تبويب من المتصفّح التلقائي للمستخدم كجزء من تطبيقاتهم. تم إطلاق علامات التبويب المخصّصة في الأصل من خلال Chrome، ولذلك كانت تُعرف باسم "علامات التبويب المخصّصة في Chrome". في الوقت الحالي، أصبحت Android API وتتيح معظم المتصفّحات المألوفة استخدام علامات التبويب المخصّصة، بما في ذلك Chrome وFirefox وEdge وSamsung Internet، لذا من المناسب أكثر تسميتها "علامات التبويب المخصّصة".
تساعد علامات التبويب المخصّصة المطوّرين في دمج محتوى الويب بسلاسة في تجربة تطبيقاتهم. وتسمح هذه الميزة أيضًا للمطوّرين بتخصيص النشاط الذي يتم فيه عرض محتوى الويب من خلال السماح لهم بتخصيص لون شريط الأدوات وأزرار الإجراءات والرسوم المتحركة للانتقالات وغير ذلك.
وتوفّر هذه العناصر أيضًا ميزات لم تكن متاحة سابقًا عند استخدام WebView أو تضمين محرك متصفّح. بما أنّ المتصفّح داخل التطبيق يستند إلى متصفّح المستخدم، تشارك علامات التبويب المخصّصة مساحة التخزين مع المتصفّح، لذا لا يحتاج المستخدمون إلى إعادة تسجيل الدخول إلى مواقعهم الإلكترونية المفضّلة في كل مرة يشغّل فيها أحد تطبيقاتهم المثبّتة جلسة تصفّح داخل التطبيق.
على عكس WebViews، تتيح علامات التبويب المخصّصة جميع ميزات منصة الويب وواجهات برمجة التطبيقات التي يتيحها المتصفّح الذي يشغّلها.
فتح تطبيقات الويب التقدّمية باستخدام ميزة "النشاط الموثوق به على الويب"
توفّر تطبيقات الويب التقدّمية العديد من السلوكيات والإمكانات التي كانت متاحة في السابق فقط لتطبيقات المخصّصة للمنصة على الويب. ومع طرح السلوك المشابه للتطبيقات، ازداد رغبة المطوّرين في إعادة استخدام هذه التجارب على Android، وبدأ المطوّرون يطلبون طُرقًا لدمج تطبيقات الويب التقدمية في تطبيقاتهم.
تتيح ميزة "علامات التبويب المخصّصة" جميع إمكانات الويب الحديثة وواجهات برمجة التطبيقات، ولكن بما أنّها مخصّصة primarily لفتح محتوى تابع لجهات خارجية، تتضمّن شريط أدوات في أعلى الصفحة يُعلم المستخدمين بعنوان URL الذي ينتقلون إليه، بالإضافة إلى رمز القفل الذي يشير إلى ما إذا كان الموقع الإلكتروني آمنًا. عند فتح تجربته الخاصة، يمنع شريط الأدوات التطبيق من الشعور بأنه مدمج مع نظام التشغيل.
تم طرح ميزة النشاطات الموثوق بها على الويب في الإصدار 72 من Chrome، وهي تتيح للمطوّرين استخدام تطبيق الويب المتوافق (PWA) داخل تطبيق Android. يشبه بروتوكولها بروتوكول علامات التبويب المخصّصة، ولكنه يقدّم واجهات برمجة تطبيقات تتيح للمطوّرين التحقّق (من خلال روابط مواد العرض الرقمية) من أنّهم يتحكّمون في كلّ من تطبيق Android وعنوان URL الذي يتم فتحه، وإزالة شريط عنوان URL عندما يكون كلاهما صحيحًا.
وقدّمت Google أيضًا واجهات برمجة تطبيقات لإنشاء شاشات البداية عند فتح التطبيق المتوافق مع الويب أو تفويض إشعارات الويب لمعالجتها من خلال رمز Android. ستتوفّر قريبًا المزيد من الميزات، مثل إتاحة خدمة "الفوترة في Play".
بما أنّه من المتوقّع أن تكون عناوين URL التي يتم فتحها في "الأنشطة الموثوق بها على الويب" هي تطبيقات ويب تقدّمية وأن تتضمّن مجموعة من السلوكيات و خصائص الأداء، تُقدّم ميزة "الأنشطة الموثوق بها على الويب" معايير جودة لتطبيقات الويب التقدّمية التي يتم فتحها فيها.
قيود الحلول الحالية
أظهرت ملاحظات المطوّرين الحاجة إلى توافق علامات التبويب المخصّصة مع المنصة مع مرونة WebView ليتمكّنوا، على سبيل المثال، من الوصول إلى عنصر DOM أو إدخال JavaScript في المتصفّحات داخل التطبيقات.
"علامات التبويب المخصّصة" هي علامات تبويب يعرضها متصفّح المستخدم، مع واجهة مستخدم مخصّصة أو بدون واجهة مستخدم على الإطلاق. وهذا يعني أنّ المتصفّح يجب أن يستوفي توقعات المستخدمين بشأن الخصوصية والأمان في المتصفّح، ما يجعل بعض هذه الميزات مستحيلة.
يبحث فريق "الويب على Android" في Google عن بدائل ويجرّب الحلول لحلّ حالات الاستخدام هذه. يُرجى متابعتنا لمعرفة التفاصيل.
ملخّص
يكون WebView مفيدًا عندما يحتاج تطبيق إلى HTML وCSS وJavaScript داخل تطبيق Android، ولكنه لا يستخدم الميزات والإمكانات الأكثر تقدمًا المتاحة على الويب الحديث، مثل إشعارات الدفع العميق وWeb Bluetooth وغيرها. لا يُنصح باستخدام هذا الإعداد عند فتح محتوى تم تصميمه لمنصّة الويب الحديثة، لأنّه قد لا يتم عرضه بالطريقة التي قصدها المطوّر. لا يُنصح باستخدام WebView لإنشاء متصفّحات داخل التطبيقات. من ناحية أخرى، فإنّ عرض محتوى الويب التابع للطرف الأول هو أحد المجالات التي تُبرز فيها WebViews كفاءتها حقًا.
يجب استخدام "نشاط الويب الموثوق" عندما يريد المطوّرون عرض تطبيق الويب التقدّمي الخاص بهم بملء الشاشة داخل تطبيق Android. ويمكن استخدامه كنشاط وحيد في التطبيق أو استخدامه مع أنشطة Android أخرى.
علامات التبويب المخصّصة هي الطريقة المُقترَحة لفتح محتوى تابع لجهات خارجية ومصمّم لمنصّة الويب، ويُعرف هذا المحتوى أيضًا باسم المتصفّحات داخل التطبيقات.