يتساءل الكثيرون عن سبب عدم ظهور بعض التطبيقات في متجر غوغل بلاي على هواتفهم أو هواتف أصدقائهم،وهو أمر قد مر به كثير من أقربائي وأصدقائي وكانوا يسألونني عن ذلك، ولطالما كانت هواتفهم إما ضعيفة أو متوسطة أو لا تحوي على الكثير من الميزات.
إذا أن متجر غوغل بلاي يتطور يوماً بعد يوم، وهو يدعم خاصية فلترة رهيبة تكون فعلياً بالتعاون مع مطوري التطبيقات..
وسأشرح لكم بالتفصيل كيف تتم عملية الفلترة حسب الجهاز المستخدم للبحث وذلك ابتداءً من تطوير أي تطبيق أو لعبة.
جميعنا يعرف أنه ليس جميع الأجهزة متماثلة في المواصفات، وأيضاً فإن التطبيقات بدورها لا تستخدم جميع ميزات الجهاز وإنما بعضها، وبعض التطبيقات مثل الألعاب الثقيلة تتطلب عتاداً معيناً لا يتواجد في جميع الأجهزة فبعضها يتطلب 2 غيغابايت رام على الأقل وبعضها لا يعمل سوى على نسخة أندرويد معينة، وبعض التطبيقات الأخرى تستخدم خاصيات في الكاميرا معينة قد لا تتواجد في جميع الأجهزة ولهذا السبب ظهرت الحاجة إلى عملية الفلترة للحصول على أكبر توافقية بين الأجهزة والتطبيقات وتتم هذه العملية كالتالي:
في البداية عندما يقوم أي مطور تطبيقات بكتابة الكود الخاص بتطبيقه فعليه أن يقوم بالتصريح عن الميزات ونوع العتاد الذي يحتاجه تطبيقه ليعمل بشكل سلس ويقوم بذلك عن طريق Android Package Manager أو الحزمة الإدارية الخاصة بأندرويد والتي تحوي على العديد من التوابع والثوابت التي بإمكاننا استخدامها كمطوري تطبيقات لتعريف الميزات التي يحتاجها التطبيق مثل:
استدعاء ميزة البلوتوث: android.hardware.bluetooth
والتي تستخدم للدلالة على أن التطبيق يحتاج لميزة البلوتوث على الجهاز كي يعمل
استدعاء ميزة البصمة: android.hardware.fingerprint
تستخدم إذا كان التطبيق يحتاج إلى قارئ البصمة كي يعمل، أي أنه في حال كان الجهاز لا يحوي قارئ بصمة فإن التطبيق لن يظهر على هذا الجهاز وسأشرح لاحقاً كيف يتم ذلك.
ولكن هنالك بعض التطبيقات التي قد لا تحتاج لميزات معينة كي تعمل ولكنها تحتاجها لكي تعمل بشكل أفضل أو كامل، مثل ميزة البصمة فبعض التطبيقات تمنحنا القدرة على توثيق حسابنا داخل التطبيق من خلال البصمة وهي ميزة إضافية يعمل التطبيق بشكل كامل بدونها لكن إن أحببنا الاستفادة من هذه الميزة فيجب أن يحوي الجهاز على قارئ بصمة، ولكي يستطيع المبرمج تحديد هذا الأمر فإنه لدينا بعض التوابع التي تأخذ قيمتين إما True أوFalse بحيث أن True تستخدم للدلالة على أن التطبيق لن يعمل دون وجود هذه الخاصية أي في هذه الحالة لن يظهر التطبيق على الأجهزة التي لا تحمل هذه الميزة، أما بالنسبة ل False فإنها تعطي دلالة على أن التطبيق يعمل على الأجهزة التي لاتحوي هذه الخاصية ولكن يفضل أن تكون موجودة وبذلك فإن التطبيق يظهر عند أغلب المستخدمين.
إضافة إلى أنه هنالك بعض الميزات التي تحمل نسخاً متعددة مثل البلوتوث 5.0، فيمكننا أيضاً كمبرمجين ومطوري تطبيقات أن نحدد ماهي النسخة المدعومة والمطلوب وجودها في الجهاز كي يعمل التطبيق.
عندما يقوم أي مستخدم بفتح تطبيق غوغل بلاي، فإن المتجر يقوم بطلب لائحة بالميزات التي يحملها الجهاز على الصعيدين العتادي الفيزيائي وكذلك البرمجي وذلك من الحزمة الإدارية الخاصة بأندرويد عن طريق استدعاء ()getSystemAvailableFeatures
وفي نفس الوقت، عندما يقوم المبرمج بتحميل تطبيقه الخاص على متجر غوغل بلاي، فإن المتجر يقوم بفحص ملف ال Manifest الخاص به ويقوم بالبحث على الميزات التي يتطلبها التطبيق لكي يعمل بشكل كامل بالإضافة إلى بعض الميزات الأخرى وبعض المعلومات الإضافية، بعدها يقوم المتجر بتخزين هذه المعلومات بشكل داخلي كمعلومات إضافية عن التطبيق أو ما يسمى Metadata للاحقة الخاصة بتطبيقات الأندرويد .apk
وبذلك فإنه في كل مرة نقوم بالبحث عن تطبيق ما على متجر غوغل بلاي فإنه يقوم بمقارنة ميزات الجهاز الذي حصل عليها المتجر من خلال استدعاء ()getSystemAvailableFeatures كما ذكرنا سابقاً مع ال Metadata الخاصة بكل تطبيق، فإن تحقق وجود جميع الميزات المطلوبة من قبل التطبيق في الجهاز فإن المتجر يعرض لنا هذا التطبيق لكي نستطيع تحميله، وإلا فلن يظهر لدينا التطبيق داخل المتجر.
بشكل عام كانت هذه لمحة بسيطة عن هذا الموضوع، وبالطبع فإن أي مهتم بإمكانه التوجه إلى موقع مطوري غوغل وذلك للحصول على معلومات موسعة حول هذا الموضوع، لكني لم أشأ تحويل المقال إلى درس تعليمي برمجي وذكر جميع الميزات المدعومة وكذلك نسخ ال Api المختلفة وغيرها.
مواضيع قد تهمك: