يساعد تطبيق ShareChat في معالجة مشاكل Jank لزيادة مستوى تنقّلهم في الخلاصة بنسبة %60.

المقدّمة

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

التطبيق بالأرقام

  • أكثر من 100 مليون عملية تنزيل
  • أكثر من 180 مليون مستخدم نشط شهريًا
  • أكثر من 32 مليون منشئ محتوى
  • 15 لغة هندية مختلفة
  • يتم إنشاء 1.5 مليون مشاركة تقريبًا يوميًا.

التحدّي

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

نتيجةً لذلك، شهد التطبيق عددًا متزايدًا من اللقطات المتأخرة أو المتأخرة (المعروفة أيضًا باسم "Jank"). وقد كان إصلاح مشاكل الأداء هذه من خلال تحسين اللقطات البطيئة والجامدة أمرًا بالغ الأهمية في تقديم تجربة سلسة لجميع المستخدمين. وسيؤدّي ذلك أيضًا دورًا مهمًا في تشجيع المستخدمين على قضاء المزيد من الوقت على التطبيق وزيادة تفاعلهم، وبالتالي تحسين تقييم ShareChat على "متجر Play" لنظام التشغيل Android.

كيفية التنفيذ

تعاون فريق ShareChat مع فريق علاقات المطوّرين في Google للحدّ من تأثير المشاكل في النشاط التجاري من خلال تحسين الإطارات البطيئة والمجمّدة (Jank) في التطبيق. وعلى وجه التحديد، عمل الفريق على تحسين المشاكل التالية:

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

  • بطاقة تصميم مفرطة: من خلال تحديد الملفات الشخصية، لوحظ أيضًا أنّ بعض مالكي الملفات الشخصية كانوا يطلبون تنسيقات requestLayouts إضافية. لتحسين الأداء، تم تحديث الرمز لاستخلاص قيمة في وقت الإنشاء بدلاً من كل عملية ربط، وبالتالي توفير تكاليف requestLayout الإضافية.

  • OverDraw - تم تبسيط التنسيقات لتقليل الطبقات وإزالة الألوان التي تم ضبطها بشكل منفصل لكل طبقة من الطبقات.

  • تسوية التسلسل الهرمي - تمت ملاحظة التضخم الطويل من خلال التوصيف والفحص اليدوي للعديد من الشاشات. تم تسوية العرض الهرمي باستخدام ConstraintLayout لحل هذه المشكلة.

  • تضخُّم مفرط في المشاهدات: يتم تحديد مدّة التضخم الطويلة لمشاهدات معيّنة أثناء إنشاء ملفات تعريف خاصة بها. تم تحويل هذه المشاهدات إلى مشاهدات.

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

  • نقل البيانات من Rx إلى Coroutine: أدّى استهلاك الذاكرة أيضًا إلى تكرار طلب تجميع البيانات المهملة وارتفاع عدد سلاسل التعليمات في أكثر من 100 RX. تم نقل العديد من حالات الاستخدام إلى Coroutine لإصلاح هذه المشاكل.

  • استخدام Coil لتحميل الصور: تسبّبت ميزة "التمرير" في حدوث مشاكل أثناء تحميل الصور، لا سيّما في المكوّنات التي تم إنشاؤها باستخدام الإصدار Jetpack. تبيّن لنا أيضًا أنّه أثناء تحميل الصور في LazyColumn، كان شريط حد العرض مرتفعًا. وقد أدت هذه الحالات إلى استخدام الملف لتحميل الصور.

  • تنظيف الرموز القديمة وإعادة هيكلتها: ساعدت إزالة الرموز البرمجية القديمة والتجارب في إزالة العروض المخفية غير الضرورية من واجهة المستخدم وساعدت في إعادة كتابة بعض الشاشات بطريقة أفضل.

النتائج

من خلال تحليل مجالات التحسين وتحديد استراتيجيات التحسين، يمكن لتطبيق ShareChat تحسين التجربة العامة للمستخدمين وزيادة نسبة التفاعل وتقييمات "متجر Play". في ما يلي نظرة عامة كَمية للنتائج التي حققها ShareChat -

  • انخفاض بنسبة% 45 تقريبًا في اللقطات "بطيء العرض" على "متجر Play"
  • تقليل بنسبة% 30 تقريبًا في إطارات "Frozen" على "متجر Play"
  • انخفضت معدّل عرض الإطارات البالغ 10 آلاف لقطة من 10.72% إلى 3.98% لكل 10 آلاف لقطة
  • زيادة الانتقال في الخلاصة بنسبة %60
  • ارتفع إجمالي التقييمات على المتجر من 4.0 تقريبًا إلى 4.3.
  • زيادة بنسبة% 10 في استهلاك المشاركات

"هدفنا في ShareChat هو أن يكون أفضل تطبيق لوسائل التواصل الاجتماعي يُسعد مستخدمينا، وهذا يعني أيضًا أن نكون الأفضل في ما يتعلّق بأداء التطبيق. ساعدنا تعاوننا مع فريق علاقات مطوّري البرامج في Google في تحديد مجالات التحسين على أجهزة المستخدمين منخفضة الجودة الأكثر استخدامًا. وتعلّمنا أفضل الممارسات والأدوات المتعلقة بالأداء لتحديد وإصلاح الإطارات الثابتة وحالات عدم الأداء وتجاوز الأخطاء وأخطاء ANR".

– فيهان فيرما، مديرة هندسة، فريق Android في ShareChat