استطاعت شركة Monzo تقليل أكثر من 9,000 سطر من الرموز بالإضافة إلى تحسين معدّل الانسحاب بمقدار 5 مرات من خلال تطبيق CameraX.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
Monzo هي خدمة وتطبيق مصرفية يقدّمان خدمات مالية رقمية ومستندة إلى الأجهزة الجوّالة فقط. وتتمثل مهمتهم في جعل الأموال مفيدة للجميع. ولتسجيل العملاء الجدد، يلتقط تطبيق Monzo صورًا لمستند تعريف (مثل
جواز السفر أو رخصة القيادة أو بطاقة تعريف الهوية) ويلتقط فيديو ذاتيي لإثبات أن مستندات التعريف هي لمقدِّم الطلب.
الإجراءات التي اتخذتها الشركة
استخدمت الإصدارات المبكرة من تطبيق
Monzo
واجهات برمجة تطبيقات Camera2. أدّت الأعطال العشوائية والسلوكيات الغريبة على بعض الأجهزة
إلى عدم متابعة 25% من العملاء المحتملين خطوات التقاط معلومات تحديد الهوية وتصوير فيديو ذاتي.
لمواجهة هذه التحديات، لجأت Monzo إلى CameraX، وهي مكتبة لدعم Jetpack وتم تصميمها لتسهيل عملية تطوير تطبيقات الكاميرا من أجل تنفيذ متطلبات التقاط الصور والفيديوهات. وباستخدام CameraController
، نفّذت Monzo
عملية التقاط صورة لمستند التعريف باستخدام طريقة
takePicture()
. في الفيديو الذاتي، استخدموا طريقتَي
startRecording()
وstopRecording()
. وأرادوا إجراء تغييرات على التصميم خلال عملية التسجيل وأرادوا إنشاء مكتبة كاميرا أكثر وضوحًا تمنحهم مرونة أكبر في التصميم.
النتائج
ومن خلال إطلاق CameraX، تمكّن فريق Monzo من تبسيط الرموز البرمجية الخاصة بها، ما يجعلها أكثر قابلية للصيانة، كما ساعد في تبسيط عملية التطوير. أدى الانتقال إلى CameraX إلى تقليل الحوادث بشكل كبير ولم يعد هناك عمليات تنشيط عشوائية
لفلاش الكاميرا. ساهم كل هذا في تقليل معدل الانسحاب
في تدفق الاشتراك وتحسين ملاحظات المستخدمين.
أدى تبسيط الرمز الناتج عن استخدام CameraX إلى تقليل ما يقرب من 9,000 سطر من الرموز، بما في ذلك 6,000 سطر من رموز واجهة المستخدم. بالإضافة إلى تسهيل صيانة الرمز البرمجي وتبسيطه، ساهم CameraX أيضًا في تحسين تغطية الرموز البرمجية في اختبارات الوحدات.
والأهم من ذلك، أن التأثير في عملية الاشتراك كان كبيرًا. مع إطلاق CameraX وتغييرات تصميم التدفق المبسط، انخفض معدل الانسحاب
من التقاط صور تعريف الهوية وتسجيل فيديو الصور الذاتية من 25% إلى
حوالي 5%.
"بالنسبة إلينا، كانت CameraX تهدف بشكل أساسي إلى الاستقرار وتوفير تجربة دمج
سهلة للمطورين لدينا. لقد كانت المكتبة المثالية بالنسبة لنا -
أردنا فقط طريقة بسيطة لالتقاط الصور ومقاطع الفيديو. وقد أعطانا CameraX هذا، علاوةً على ذلك، أصبحت الرموز البرمجية أكثر بساطة وتحسّن تجربة المستخدم". Anastasios
Morfopoulos—مطوِّر Android، Monzo
البدء
يُرجى الاطّلاع على مستندات CameraX لمعرفة طريقة تقديم رمز التقاط صور أكثر فعالية وتبسيطًا لتطبيقك أو لعبتك.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Monzo reduced over 9,000 lines of code and improved registration dropout by 5x with CameraX\n\nMonzo is a banking service and app offering digital and mobile-only financial\nservices. Their mission is to make money work for everyone. To sign up new\ncustomers, the Monzo app captures images of an identification document (such as\npassport, driving license, or ID card) and takes a selfie video to prove that\nthe identification documents are for the applicant.\n\nWhat they did\n-------------\n\nEarly versions of the\n[Monzo](https://play.google.com/store/apps/details?id=co.uk.getmondo)\napp used camera2 APIs. Random crashes and odd behaviors on some devices led to\n25% of potential customers not proceeding beyond the identification capture and\nselfie video steps.\n\nTo address these challenges, Monzo turned to CameraX, a Jetpack support library\ndesigned to make camera app development easier, to implement their image and\nvideo capture requirements. Using\n[`CameraController`](/reference/androidx/camera/view/CameraController), Monzo implemented\nthe identification document image capture using the\n[`takePicture()`](/reference/androidx/camera/view/CameraController#takePicture(androidx.camera.core.ImageCapture.OutputFileOptions,%20java.util.concurrent.Executor,%20androidx.camera.core.ImageCapture.OnImageSavedCallback))\nmethod. For the selfie video, they used the\n[`startRecording()`](/reference/androidx/camera/view/CameraController#startRecording(androidx.camera.view.video.OutputFileOptions,%20java.util.concurrent.Executor,%20androidx.camera.view.video.OnVideoSavedCallback))\nand\n[`stopRecording()`](/reference/androidx/camera/view/CameraController#stopRecording())\nmethods. They wanted to make design changes to the sign-up flow and wanted a\nmore straightforward camera library that would give them more design\nflexibility.\n\nResults\n-------\n\nIntroducing CameraX enabled Monzo to simplify their code, making it more\nmaintainable, and has helped simplify development. The move to CameraX has\ngreatly reduced crashes and they are no longer seeing random activations of the\ncamera flash. All of this has contributed to a reduction in the drop-off rate in\nthe sign-up flow and has improved user feedback.\n\nThe simplification in code resulting from implementing CameraX reduced almost\n9,000 lines of code, including 6,000 lines of UI code. In addition to making\nthe code easier to maintain and simplifying development, CameraX also led to\nbetter code coverage in unit tests.\n\nImportantly, the impact on the sign-up flow was significant. With the\nintroduction of CameraX and the simplified flow design changes, the dropout rate\nfrom identification image capture and selfie video recording dropped from 25% to\naround 5%.\n\n\"For us, CameraX was all about stability and having an easy integration\nexperience for our developers. It was the perfect library for us---we just\nwanted a simple way to take pictures and videos. CameraX has given us that, plus\nour code is simpler and the user experience better.\" *Anastasios\nMorfopoulos---Android developer, Monzo*\n\nGet started\n-----------\n\nCheck out the [CameraX documentation](/training/camerax) to learn how to\nintroduce more robust and simplified image capture code to your app or game."]]