تتضمّن عملية تطوير صفحات ويب وتطبيقات للأجهزة الجوّالة تحديات مختلفة مقارنةً بعملية تطوير صفحة ويب لمتصفحات الويب على أجهزة الكمبيوتر. يمكن أن تساعدك الممارسات التالية في توفير تطبيق الويب الأكثر فعالية على Android والأجهزة الجوّالة الأخرى.
- أعِد توجيه الأجهزة الجوّالة إلى نسخة الموقع الإلكتروني المخصّصة للأجهزة الجوّالة من موقعك الإلكتروني. هناك عدة طرق لتنفيذ ذلك باستخدام عمليات إعادة التوجيه من جهة الخادم. إحدى الطرق الشائعة هي "تقصّي" سلسلة وكيل المستخدم التي يقدّمها متصفّح الويب. لتحديد ما إذا كان سيتم عرض نسخة الموقع الإلكتروني المخصّصة للأجهزة الجوّالة من موقعك الإلكتروني، ابحث عن السلسلة "mobile" في وكيل المستخدم.
- استخدِم HTML5
للأجهزة الجوّالة. HTML5 هي لغة الترميز الأكثر شيوعًا المستخدمة في المواقع الإلكترونية المتوافقة مع الأجهزة الجوّالة.
يشجّع هذا المعيار على تطوير المواقع الإلكترونية بما يتوافق مع الأجهزة الجوّالة أولاً، وذلك للمساعدة في ضمان عملها على مجموعة متنوعة من الأجهزة. على عكس لغات الويب السابقة، تستخدم HTML5 تعريفات أبسط
<DOCTYPE>وcharset:<!DOCTYPE html> ... <meta charset="UTF-8">
- استخدام بيانات وصفية لإطار العرض من أجل تغيير حجم صفحة الويب بشكل صحيح في المستند
<head>، قدِّم بيانات وصفية تحدّد الطريقة التي تريد أن يعرض بها إطار العرض في المتصفّح صفحة الويب. على سبيل المثال، يمكن أن تحدّد البيانات الوصفية لإطار العرض الارتفاع والعرض لإطار عرض المتصفّح، ومقياس الصفحة الأولي، وكثافة الشاشة المستهدَفة.يوضّح المثال التالي كيفية ضبط البيانات الوصفية لإطار العرض:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
لمزيد من المعلومات حول كيفية استخدام البيانات الوصفية لإطار العرض على الأجهزة التي تعمل بنظام التشغيل Android، يُرجى قراءة مقالة إتاحة تطبيقات الويب على شاشات مختلفة.
- استخدِم تخطيطًا خطيًا عموديًا. تجنَّب الحاجة إلى أن ينتقل المستخدم إلى اليمين واليسار أثناء تصفّح صفحتك. يسهّل التنقّل للأعلى والأسفل على المستخدم ويجعل صفحتك أبسط.
- اضبط ارتفاع التنسيق وعرضه على
match_parent. يضمن ضبط ارتفاع وعرض عنصرWebViewعلىmatch_parentأن يتم تحديد حجم طرق العرض في تطبيقك بشكل صحيح. ننصح بعدم ضبط الارتفاع علىwrap_contentلأنّ ذلك يؤدي إلى تحديد حجم غير صحيح. وبالمثل، لا يمكن ضبط عرض التنسيق علىwrap_content، وسيؤدي ذلك إلى استخدامWebViewلعرض العنصر الرئيسي بدلاً من ذلك. وبسبب هذا السلوك، من المهم أيضًا التأكّد من أنّ ارتفاع وعرض أي من عناصر تصميم العنصر الرئيسي الخاصة بعنصرWebViewلم يتم ضبطهما علىwrap_content. - تجنُّب طلبات ملفات متعددة: بما أنّ سرعة الاتصال على الأجهزة الجوّالة تكون عادةً أبطأ من سرعة الاتصال على أجهزة الكمبيوتر المكتبي، احرص على تحميل صفحتك بأسرع ما يمكن. إحدى طرق تسريع ذلك هي تجنُّب تحميل ملفات إضافية، مثل ملفات أوراق الأنماط وملفات النصوص البرمجية، في
<head>. ننصحك أيضًا بإجراء تحليل للأجهزة الجوّالة باستخدام أداة "إحصاءات PageSpeed" من Google للحصول على اقتراحات تفصيلية بشأن التحسين خاصة بتطبيقك. - إيقاف عمليات التنزيل التلقائي لرموز المواقع المفضّلة إذا لم تكن بحاجة إليها
تنزّل
WebViewتلقائيًا رمز الموقع المفضّل عند الانتقال إلى أي موقع إلكتروني. تحتفظWebViewبنسختَين من كل رمز مفضّل تم تنزيله (إحداهما في Java والأخرى في الذاكرة الأصلية)، لذا يؤدي إيقاف عمليات تنزيل الرموز المفضّلة إلى توفير مساحة الذاكرة (حوالي 8 كيلوبايت لكل مثيل منWebView) وتقليل استهلاك النطاق الترددي. إذا كان تطبيقك لا يستخدم رموز المواقع المفضّلة أو يعرضها، استخدِمWebSettingsCompat.setDownloadFaviconsEnabled()من مكتبة Jetpack Webkit لإيقاف عمليات التنزيل التلقائي:Kotlin
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.settings, false) }
Java
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.getSettings(), false); }
- إدارة الحالة المحفوظة وتجنُّب حدود المعاملات إذا كنت تحفظ حالة
WebViewأثناء أحداث مراحل النشاط باستخدامsaveState(Bundle)، عليك فرض حدود على حجم الحمولة باستخدامWebViewCompat.saveState()لتجنُّب تجاوز الحد الأقصى المسموح به في Android وهوsavedInstanceStateميغابايت. لمزيد من المعلومات، يُرجى الاطّلاع على إدارة حالة WebView بكفاءة. - تحسين اتصالات الشبكة وتحميل الصفحات باستخدام واجهات برمجة التطبيقات الخاصة بالتحميل المبني على توقّع.
لتقليل وقت استجابة التنقّل، استخدِم واجهات برمجة تطبيقات Jetpack Webkit لإعداد اتصالات الشبكة والمحتوى مسبقًا.
استخدِم
Profile.addQuicHintsلإعداد بروتوكول HTTP/3 مسبقًا عبر QUIC كي يتمكّن WebView من استخدام QUIC على الفور عند إجراء الاتصال الأول، واستخدِمProfile.preconnectلإعداد مآخذ توصيل الشبكة مسبقًا. عندما تكون عناوين URL للوجهة معروفة أو محتملة، استخدِمProfile.prefetchUrlAsyncأوWebViewCompat.prerenderUrlAsyncلجلب الصفحات أو عرضها في الخلفية. لمزيد من المعلومات، يُرجى قراءة المقالة التحميل المبني على توقُّع في WebView. - إيقاف عمليات التنزيل التلقائي لرموز المواقع المفضّلة إذا لم تكن بحاجة إليها
تنزّل
WebViewتلقائيًا رمز الموقع المفضّل عند الانتقال إلى أي موقع إلكتروني. تحتفظWebViewبنسختَين من كل رمز مفضّل تم تنزيله (إحداهما في Java والأخرى في الذاكرة الأصلية)، لذا يؤدي إيقاف عمليات تنزيل الرموز المفضّلة إلى توفير مساحة الذاكرة (حوالي 8 كيلوبايت لكل مثيل منWebView) وتقليل استهلاك النطاق الترددي. إذا كان تطبيقك لا يستخدم رموز المواقع المفضّلة أو يعرضها، استخدِمWebSettingsCompat.setDownloadFaviconsEnabled()من مكتبة Jetpack Webkit لإيقاف عمليات التنزيل التلقائي:Kotlin
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.settings, false) }
Java
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.getSettings(), false); }
- إدارة الحالة المحفوظة وتجنُّب حدود المعاملات إذا كنت تحفظ حالة
WebViewأثناء أحداث مراحل النشاط باستخدامsaveState(Bundle)، عليك فرض حدود على حجم الحمولة باستخدامWebViewCompat.saveState()لتجنُّب تجاوز الحد الأقصى المسموح به في Android وهوsavedInstanceStateميغابايت. لمزيد من المعلومات، يُرجى الاطّلاع على إدارة حالة WebView بكفاءة.
مراجع إضافية
- التحميل المبني على توقّع في WebView
- إدارة حالة WebView بكفاءة
- واجهة مستخدم فائقة الوضوح في WebView
- تعرَّف على التصميم السريع الاستجابة
- صور ذات نقاط لكل بوصة عالية لكثافات البكسل المتغيرة
- أفضل الممارسات المتعلّقة بالويب على الأجهزة الجوّالة
- تسريع الويب