إمكانية الاتصال للمليارات

سيختبر أكثر من نصف جميع المستخدمين حول العالم تطبيقك عبر اتصال بشبكة الجيل الثاني. ولتحسين تجربتهم، يمكنك تحسين الاتصالات منخفضة السرعة والعمل بلا اتصال بالإنترنت من خلال تخزين البيانات وإضافة الطلبات إلى قائمة المحتوى التالي والتعامل مع الصور لتحقيق الأداء الأمثل.

ويمكنك العثور هنا على بعض النصائح حول كيفية تحقيق هذه الأشياء.

تحسين الصور

هناك عدد من الطرق لتسهيل تنزيل الصور. ويشمل ذلك عرض صور WebP وتغيير حجم الصور ديناميكيًا واستخدام مكتبات تحميل الصور.

عرض صور WebP

  • يمكنك عرض ملفات WebP على الشبكة لتقليل أوقات تحميل الصور وتوفير معدّل نقل البيانات للشبكة. غالبًا ما يكون حجم ملف WebP أصغر من حجم الملفات بتنسيقَي PNG وJPG، وأن يكون بدرجة جودة الصورة نفسها على الأقل. حتى في حال استخدام الإعدادات مع فقدان البيانات، يمكن أن ينتج تنسيق WebP صورة مطابقة تقريبًا للصورة الأصلية. وفّر Android التوافق مع تنسيق WebP مع فقدان البيانات منذ نظام التشغيل Android 4.0 (المستوى 14 لواجهة برمجة التطبيقات: آيس كريم ساندويتش) وإمكانية استخدام WebP بدون فقدان البيانات منذ الإصدار 4.2 (المستوى 17 من واجهة برمجة التطبيقات: Jelly Bean).

الصور ذات الحجم الديناميكي

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

استخدام مكتبات تحميل الصور

  • يجب ألا يجلب تطبيقك أي صورة أكثر من مرة. تجلب مكتبات تحميل الصور، مثل Glide وPicasso، الصورة وتخزّنها مؤقتًا وتوفّر عناصر الجذب في العروض لعرض صور العناصر النائبة إلى أن تصبح الصور الفعلية جاهزة. وبما أنّ الصور يتم تخزينها مؤقتًا، تعرض هذه المكتبات النسخة المحلية في المرة التالية التي يتم فيها طلب صورة.
  • تدير المكتبات لتحميل الصور ذاكرة التخزين المؤقت الخاصة بها، وتحتفظ بأحدث الصور، وبذلك لن تتم زيادة مساحة التخزين في تطبيقك إلى أجل غير مسمى.

تحسين التواصل

ويمكنك تحسين تجربة المستخدم من خلال توفير تجربة مثالية للشبكة. على سبيل المثال، يمكنك جعل تطبيقك قابلاً للاستخدام بلا اتصال بالإنترنت، واستخدام WorkManager وRoom، وإزالة تكرار طلبات الشبكة.

إتاحة استخدام تطبيقك بلا إنترنت

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

استخدام الغرفة لاسترجاع البيانات وتخزينها مؤقتًا

  • تأكّد من أنّ تطبيقك يخزّن جميع البيانات على القرص باستخدام قاعدة بيانات أو بنية مشابهة كي يعمل على النحو الأمثل بغض النظر عن ظروف الشبكة. استخدِم مكتبة الاحتفاظ بالبيانات في الغرفة لتخزين البيانات مؤقتًا في قاعدة بيانات محلية، واستخدِم WorkManager لتعديل ذاكرة التخزين المؤقت هذه عند اتصال الجهاز بشبكة.
  • يجب أن تحتفظ التطبيقات مؤقتًا بالمحتوى الذي يتم جلبه من الشبكة. قبل إجراء طلبات لاحقة، يجب أن تعرض التطبيقات بيانات مخزَّنة مؤقتًا محليًا. ويضمن ذلك عمل التطبيق بغض النظر عما إذا كان الجهاز غير متصل بالإنترنت أو متصلاً بشبكة بطيئة أو غير موثوقة.

إزالة تكرار طلبات الشبكة

  • في البداية، تحاول البنية التي تعمل بلا اتصال بالإنترنت جلب البيانات من مساحة التخزين المحلية، وفي حال تعذّر ذلك، تطلب البيانات من الشبكة. بعد استرداد البيانات من الشبكة، يتم تخزينها مؤقتًا محليًا لاستردادها في المستقبل. ويساعد ذلك في ضمان عدم معالجة طلبات الشبكة لنفس الجزء من البيانات إلا مرة واحدة، مع تلبية الطلبات اللاحقة على الجهاز. لتحقيق ذلك، استخدِم قاعدة بيانات محلية للبيانات طويلة الأمد (عادةً android.database.sqlite أو SharedPreferences).
  • وتبسّط هذه البنية أيضًا تدفق التطبيق بين حالتَي وضع عدم الاتصال بالإنترنت وحالات الاتصال بالإنترنت، إذ يجلب أحد الجانبين من الشبكة إلى ذاكرة التخزين المؤقت، بينما يسترد الآخر البيانات من ذاكرة التخزين المؤقت لعرضه للمستخدمين.
  • بالنسبة إلى البيانات الانتقالية، يمكنك استخدام ذاكرة تخزين مؤقت ذات قيود على القرص، مثل DiskLruCache. ويجب طلب البيانات التي لا تتغيّر عادةً مرة واحدة فقط عبر الشبكة وتخزينها مؤقتًا لاستخدامها في المستقبل. ومن الأمثلة على هذه البيانات الصور والمستندات غير الزمنية، مثل المقالات الإخبارية أو المشاركات على وسائل التواصل الاجتماعي.

ضبط نقل البيانات

هناك عدة طرق يمكن لتطبيقك من خلالها التكيّف مع ظروف الشبكة لتوفير تجربة أفضل للمستخدم. على سبيل المثال، يمكنها إعطاء الأولوية لطلبات الشبكة لتقليل وقت انتظار المستخدم للحصول على المعلومات. ويمكنه أيضًا رصد سرعات الشبكة الأبطأ والتغييرات التي قد تحدث أثناء الاتصال بالشبكة والتكيّف معها.

تحديد أولوية معدل نقل البيانات

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

استخدام نطاق ترددي أقل مع الاتصالات الأبطأ

  • تعتمد قدرة تطبيقك على نقل البيانات في الوقت المناسب على الاتصال بالشبكة. يمكن أن يساعد رصد جودة الشبكة وضبط الطريقة التي يستخدمها تطبيقك في تقديم تجربة ممتازة للمستخدمين.
  • يمكنك استخدام الطرق التالية لرصد جودة الشبكة الأساسية. وباستخدام البيانات الواردة من هاتين الطريقتين، يجب أن يخصِّص تطبيقك كيفية استخدامه للشبكة ليواصل تقديم استجابة في الوقت المناسب لإجراءات المستخدمين:
  • مع الاتصالات الأبطأ، جرِّب تنزيل وسائط منخفضة الدقة فقط أو ربما عدم تنزيل أي وسائط على الإطلاق. ويضمن ذلك إمكانية استخدام المستخدمين للتطبيق في حال الاتصالات البطيئة. إذا لم تكن لديك صورة أو كانت الصورة لا تزال قيد التحميل، عليك دائمًا عرض عنصر نائب. يمكنك إنشاء عنصر نائب ديناميكي باستخدام مكتبة لوحة الألوان لإنشاء ألوان عنصر نائب تطابق الصورة المستهدفة.
  • على الأجهزة التي تعمل بنظام التشغيل Android 7.0 (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للمستخدمين تفعيل إعداد توفير البيانات الذي يساعد في تقليل استخدام البيانات. يوسّع الإصدار Android 7.0 نطاق ConnectivityManager لاكتشاف إعدادات توفير البيانات. لمزيد من المعلومات حول هذه الميزة، يُرجى الاطّلاع على توفير البيانات.

رصد التغييرات في الشبكة، ثم تغيير سلوك التطبيق

  • ويُرجى العِلم أنّ جودة الشبكة ليست ثابتة، فهي تتغير استنادًا إلى الموقع الجغرافي وحركة بيانات الشبكة والكثافة السكانية المحلية. يجب أن ترصد التطبيقات التغييرات في الشبكة وأن تضبط معدّل نقل البيانات وفقًا لذلك. وبذلك، يمكن لتطبيقك تخصيص تجربة المستخدم بما يتناسب مع جودة الشبكة. يمكنك رصد حالة الشبكة باستخدام الطرق التالية:
  • ومع تدهور جودة الشبكة، يمكنك تقليل عدد الطلبات وحجمها. ومع تحسُّن جودة الاتصال، يمكنك توسيع نطاق طلباتك إلى المستويات المُثلى.
  • في الشبكات ذات الجودة العالية والتي لا تفرض تكلفة استخدام، ننصحك بجلب البيانات مسبقًا لإتاحة هذه البيانات مسبقًا. من ناحية تجربة المستخدم، قد يعني هذا أنّ تطبيقات قارئ الأخبار تجلب ثلاث مقالات في الوقت نفسه على شبكة الجيل الثاني وتجلب عشرين مقالة في كل مرة عبر شبكة Wi-Fi. لمزيد من المعلومات حول ضبط سلوك التطبيق استنادًا إلى تغييرات الشبكة، انتقِل إلى تدريب Android على مراقبة حالة الاتصال.
  • يتم إرسال بث CONNECTIVITY_CHANGE عند تغيير اتصال الشبكة. عندما يعمل تطبيقك في المقدّمة، يمكنك الاتصال بـ registerReceiver لتلقّي هذا البث. بعد تلقّي البث، عليك إعادة تقييم حالة الشبكة الحالية وتعديل واجهة المستخدم والشبكة بشكل مناسب. يجب عدم تضمين اسم المستلِم في ملف البيان، لأنّه غير متوفّر في نظام التشغيل Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث. لمزيد من المعلومات حول هذا التغيير وغيره من التغييرات في الإصدار 7.0 من نظام التشغيل Android، يمكنك الاطّلاع على التغييرات في الإصدار 7.0 من نظام التشغيل Android.

مراجع إضافية

لمعرفة المزيد حول دعم مجموعة متنوعة من سرعات الاتصال، اطلع على الموارد التالية:

مشاركة مدونة