الفلاتر في Google Play

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

تستند عملية الفلترة في Google Play إلى عدة أنواع من البيانات الوصفية للتطبيقات و إعدادات الضبط، بما في ذلك بيانات البيان والمكتبات المطلوبة وعناصر الاعتماد على البنية وعناصر التحكّم في التوزيع التي تم ضبطها في Play Console، مثل الاستهداف الجغرافي والأسعار وغير ذلك.

تستند عملية الفلترة في Google Play جزئيًا إلى بيانات البيان وغيرها من العناصر في إطار عمل Android، ولكنّ سلوكيات الفلترة الفعلية تختلف عن الإطار ولا تكون مرتبطة بمستويات معيّنة لواجهات برمجة التطبيقات. يحدِّد هذا المستند قواعد الفلترة الحالية التي يستخدمها Google Play.

آلية عمل الفلاتر على Google Play

يستخدم Google Play قيود الفلترة الموضّحة أدناه لتحديد ما إذا كان سيتم عرض تطبيقك لمستخدم يتصفّح التطبيقات أو يبحث عنها من تطبيق Google Play.

عند تحديد ما إذا كان سيتم عرض تطبيقك، يتحقّق Google Play من متطلبات الأجهزة والبرامج على الجهاز، بالإضافة إلى مشغّل شبكة الجوّال والموقع الجغرافي وغيرها من السمات. بعد ذلك، تتم مقارنة هذه العناصر بالقيود والتبعيات التي يعرضها ملف بيان التطبيق وتفاصيل النشر.

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

يمكنك استخدام أي مجموعة من الفلاتر المتاحة لتطبيقك. على سبيل المثال، يمكنك ضبط متطلبات minSdkVersion على "4" وضبط smallScreens="false" في التطبيق، ثم عند تحميل التطبيق إلى Google Play، يمكنك استهداف البلدان الأوروبية (شركات الجوّال) فقط. وبالتالي، ستمنع فلاتر Google Play توفّر التطبيق على أي جهاز لا يستوفي جميع هذه المتطلبات الثلاثة.

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

الفلترة على موقع Google Play الإلكتروني

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

الفلترة استنادًا إلى بيان التطبيق

يتم تفعيل معظم الفلاتر بواسطة عناصر ضمنملف بيان التطبيق، AndroidManifest.xml (على الرغم من أنّ بعض العناصر في ملف البيان قد لا تؤدي إلى بدء عملية الفلترة). يسرد الجدول 1 عناصر البيان التي يجب استخدامها لبدء عملية filtering، ويوضّح آلية عمل الفلترة لكل عنصر.

الجدول 1: عناصر البيان التي تؤدي إلى بدء الفلترة على Google Play

عنصر البيان اسم الفلتر آلية العمل
<supports-screens> حجم الشاشة

يشير التطبيق إلى أحجام الشاشة التي يمكنه التعامل معها من خلال ضبط سمات عنصر <supports-screens>. عند نشر التطبيق، يستخدم Google Play هذه السمات لتحديد ما إذا كان ينبغي عرض التطبيق للمستخدمين استنادًا إلى أحجام شاشات أجهزتهم.

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

إذا لم يُعلن التطبيق عن سمات <supports-screens>، سيستخدم Google Play القيم التلقائية لهذه السمات التي تختلف حسب مستوى واجهة برمجة التطبيقات. وعلى وجه التحديد:

  • بالنسبة إلى التطبيقات التي تضبط android: minSdkVersion أو android: targetSdkVersion على 3 أو أقل، يكون عنصر <supports-screens> نفسه غير محدّد ولا تتوفّر أي سمات. في هذه الحالة، يفترض Google Play أنّه تم تصميم التطبيق للشاشات العادية الحجم، ويعرض التطبيق على الأجهزة التي تحتوي على شاشات عادية أو أكبر حجمًا.
  • عند ضبط android: minSdkVersion أو android: targetSdkVersion على 4 أو أعلى، تكون القيمة التلقائية لجميع السمات هي "true". بهذه الطريقة، يُعتبر التطبيق متوافقًا مع جميع أحجام الشاشات بشكلٍ تلقائي.

المثال 1
يعلن البيان عن <uses-sdk android:minSdkVersion="3"> ولا يتضمّن عنصر <supports-screens>. النتيجة: لن يعرض Google Play التطبيق لمستخدم جهاز شاشة صغيرة، ولكن سيعرضه لمستخدمي الأجهزة العادية وذات الشاشة الكبيرة، ما لم يتم تطبيق فلاتر أخرى.

المثال 2
يُعلن البيان عن <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> ولا يتضمّن <supports-screens>. النتيجة: سيعرض Google Play التطبيق للمستخدمين على جميع الأجهزة، ما لم يتم تطبيق فلاتر أخرى.

المثال 3
يُعلن البيان عن <uses-sdk android:minSdkVersion="4"> ولا يتضمّن عنصر <supports-screens>. النتيجة: سيعرض Google Play التطبيق لجميع المستخدمين، ما لم يتم تطبيق فلاتر أخرى.

لمزيد من المعلومات حول كيفية الإفصاح عن توافق تطبيقك مع أحجام الشاشات، يُرجى الاطّلاع على <supports-screens> وإتاحة تطبيقك على الشاشات المتعددة.

<uses-configuration> إعدادات جهازك:
لوحة المفاتيح، وعناصر التنقّل، والشاشة التي تعمل باللمس

يمكن للتطبيق طلب ميزات معيّنة للأجهزة، ولن يعرض Google Play التطبيق إلا على الأجهزة التي تتضمّن الأجهزة المطلوبة.

المثال 1
يتضمّن البيان <uses-configuration android:reqFiveWayNav="true" />، ويبحث المستخدم عن تطبيقات على جهاز لا يتضمّن عناصر تحكّم في التنقّل بخمس طرق. النتيجة: لن يعرض Google Play التطبيق للمستخدم.

المثال 2
لا يتضمّن البيان عنصر <uses-configuration>. النتيجة: سيعرض Google Play التطبيق لجميع المستخدمين، ما لم يتم تطبيق فلاتر أخرى.

لمزيد من التفاصيل، يُرجى الاطّلاع على <uses-configuration>.

<uses-feature> ميزات الجهاز
(name)

يمكن أن يتطلّب التطبيق توفُّر ميزات معيّنة على الجهاز. تم تقديم هذه الوظيفة في الإصدار 2.0 من نظام Android (المستوى 5 من واجهة برمجة التطبيقات).

المثال 1
يتضمّن البيان <uses-feature android:name="android.hardware.sensor.light" />، ويبحث مستخدم عن تطبيقات على جهاز لا يحتوي على أداة استشعار الإضاءة. النتيجة: لن يعرض Google Play التطبيق للمستخدم.

المثال 2
لا يتضمّن البيان عنصر <uses-feature>. النتيجة: سيعرض Google Play التطبيق لجميع المستخدمين، ما لم يتم تطبيق فلاتر أخرى.

للاطّلاع على المعلومات الكاملة، يُرجى الاطّلاع على <uses-feature> .

الفلترة استنادًا إلى الميزات الضمنية: في بعض الحالات، يفسّر Google Play الأذونات المطلوبة من خلال عناصر <uses-permission> على أنّها متطلبات ميزات مساوية لتلك المُعلَن عنها في عناصر <uses-feature>. يُرجى الاطّلاع على <uses-permission>، أدناه.

‫OpenGL-ES إصدار
(openGlEsVersion)

يمكن للتطبيق أن يطلب من الجهاز توافقه مع إصدار معيّن من OpenGL-ES باستخدام السمة <uses-feature android:openGlEsVersion="int">.

المثال 1
يطلب تطبيق إصدارات متعددة من OpenGL-ES من خلال تحديد openGlEsVersion عدة مرات في البيان. النتيجة: يفترض Google Play أنّ التطبيق يتطلّب أحدث إصدار من الإصدارات المُشار إليها.

المثال 2
يطلب تطبيق إصدار OpenGL-ES 1.1، ويبحث مستخدم عن تطبيقات على جهاز متوافق مع إصدار OpenGL-ES 2.0. النتيجة: سيعرض Google Play التطبيق للمستخدم ما لم يتم تطبيق فلاتر أخرى. إذا أفاد الجهاز بأنّه متوافق مع الإصدار X من OpenGL-ES، يفترض Google Play أنّه متوافق أيضًا مع أي إصدار أقدم من X.

المثال 3
يبحث مستخدم عن تطبيقات على جهاز لا يُبلغ عن إصدار OpenGL-ES (على سبيل المثال، جهاز يعمل بنظام التشغيل Android 1.5 أو إصدار أقدم). النتيجة: يفترض Google Play أنّ الجهاز لا يتوافق إلا مع OpenGL-ES 1.0. لن يعرض Google Play للمستخدم سوى التطبيقات التي لا تحدّد openGlEsVersion أو التطبيقات التي لا تحدّد إصدارًا من OpenGL-ES أعلى من 1.0.

المثال 4
لا يحدِّد البيان openGlEsVersion. النتيجة: سيعرض Google Play التطبيق لجميع المستخدمين، ما لم يتم تطبيق فلاتر أخرى.

لمزيد من التفاصيل، يُرجى الاطّلاع على <uses-feature>.

<uses-library> مكتبات البرامج

يمكن أن يتطلّب التطبيق توفُّر مكتبات مشتركة معيّنة على الجهاز.

المثال 1
يتطلب أحد التطبيقات مكتبة com.google.android.maps، ويبحث مستخدم عن تطبيقات على جهاز لا يتضمّن مكتبة com.google.android.maps. النتيجة: لن يعرض Google Play التطبيق للمستخدم.

المثال 2
لا يتضمّن البيان عنصر <uses-library>. النتيجة: سيعرض Google Play التطبيق لجميع المستخدمين، ما لم يتم تطبيق فلاتر أخرى.

لمزيد من التفاصيل، يُرجى الاطّلاع على <uses-library>.

<uses-permission>  

لا يفرِّط Google Play في الفلترة استنادًا إلى عناصر <uses-permission>. ومع ذلك، يقرأ <uses-feature> العناصر لتحديد ما إذا كان التطبيق يتضمّن متطلبات ميزات الأجهزة التي قد لا يتم الإعلان عنها بشكل صحيح في عناصر <uses-feature>. على سبيل المثال، إذا طلب تطبيق الإذن بالوصول إلى CAMERA ولكنه لم يُعلِن عن عنصر <uses-feature> لأجل android.hardware.camera، سيعتبر Google Play أنّ التطبيق يتطلّب كاميرا، وبالتالي يجب عدم عرضه للمستخدمين الذين لا تتوفّر لديهم كاميرا على أجهزتهم.

بشكل عام، إذا طلب تطبيق أذونات ذات صلة بالأجهزة، يفترض Google Play أنّ التطبيق يتطلّب ميزات الأجهزة الأساسية، حتى لو لم تكن هناك بيانات الإفصاح المقابلة ل<uses-feature>. بعد ذلك، يضبط Google Play عملية التصفّح استنادًا إلى الميزات التي تشير إليها <uses-feature> البيانات.

للحصول على قائمة بالأذونات التي تشير إلى ميزات الأجهزة، يُرجى الاطّلاع على مستندات العنصر <uses-feature>.

<uses-sdk> الحد الأدنى لإصدار الإطار (minSdkVersion)

يمكن أن يتطلّب التطبيق حدًا أدنى لمستوى واجهة برمجة التطبيقات.

المثال 1
يتضمّن البيان <uses-sdk android:minSdkVersion="3">، ويستخدم التطبيق واجهات برمجة التطبيقات التي تم طرحها في المستوى 3 من واجهة برمجة التطبيقات. يبحث مستخدم عن تطبيقات على جهاز يتضمّن مستوى واجهة برمجة التطبيقات 2. النتيجة: لن يعرض Google Play التطبيق للمستخدم.

المثال 2
لا يتضمّن البيان minSdkVersion، ويستخدم التطبيق واجهات برمجة تطبيقات تم طرحها في المستوى 3 من واجهة برمجة التطبيقات. يبحث مستخدم عن تطبيقات على جهاز يتضمّن مستوى واجهة برمجة التطبيقات 2. النتيجة: يفترض Google Play أنّ القيمة minSdkVersion هي "1" وأنّ التطبيق متوافق مع جميع إصدارات Android. يعرض Google Play التطبيق للمستخدم ويسمح له بتنزيله، ولكن يتعطل التطبيق أثناء التشغيل.

ولأنّك تريد تجنُّب هذا السيناريو الثاني، ننصحك بإدراج minSdkVersion دائمًا. للاطّلاع على التفاصيل، يُرجى الاطّلاع على android:minSdkVersion.

الحد الأقصى لإصدار الإطار (maxSdkVersion)

تمّ إيقاف هذا العمود نهائيًا. لا يتحقّق الإصدار maxSdkVersion 2.1 من Android أو يفرض سمةmaxSdkVersion، وبالتالي لن يتم تجميع حزمة SDK إذا تم ضبطmaxSdkVersion في ملف بيان التطبيق. بالنسبة إلى الأجهزة التي تم compilingها باستخدام maxSdkVersion، سيحترم Google Play ذلك وسيستخدمه للفلترة.

لا ننصح بتحديد maxSdkVersion. للاطّلاع على التفاصيل، يُرجى الاطّلاع على android:maxSdkVersion.

فلاتر البيان المتقدّمة

بالإضافة إلى عناصر البيان الواردة في الجدول 1، يمكن أن يمحوِّل Google Play التطبيقات أيضًا استنادًا إلى عناصر البيان المتقدّمة الواردة في الجدول 2.

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

الجدول 2: عناصر البيان المتقدّمة لأجل فلترة Google Play

عنصر البيانملخّص
<compatible-screens>

يصوّر Google Play التطبيق إذا لم يتطابق حجم شاشة الجهاز وكثافتها مع أي من إعدادات الشاشة (المُعلَن عنها من خلال عنصر <screen>) في عنصر <compatible-screens>.

تحذير: يجب عدم استخدام عنصر البيان هذا في العادة. يمكن أن يؤدي استخدام هذا العنصر إلى خفض قاعدة المستخدمين المحتملين لتطبيقك بشكلٍ كبير، وذلك من خلال استبعاد جميع مجموعات حجم الشاشة وكثافتها التي لم تذكرها. يجب بدلاً من ذلك استخدام عنصر البيان <supports-screens> (الموضّح أعلاه في الجدول 1) لتفعيل وضع توافق الشاشة لإعدادات الشاشة التي لم تأخذها في الاعتبار باستخدام موارد بديلة.

<supports-gl-texture>

يصوّر Google Play التطبيق ما لم يكن الجهاز متوافقًا أيضًا مع تنسيق واحد أو أكثر من تنسيقات ضغط بنية GL المتوافقة مع التطبيق.

فلاتر أخرى

يستخدم Google Play سمات التطبيق الأخرى لتحديد ما إذا كان سيتم عرض تطبيق معيّن أو إخفاؤه لمستخدم معيّن على جهاز معيّن، كما هو موضّح في الجدول أدناه.

الجدول 3: ميزات التطبيق والنشر التي تؤثّر في الفلترة على Google Play

اسم الفلتر آلية العمل
حالة النشر

لن تظهر سوى التطبيقات المنشورة في عمليات البحث والتصفّح ضمن Google Play.

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

إذا تم تعليق تطبيق، لن يتمكّن المستخدمون من إعادة تثبيته أو تحديثه، حتى إذا كان يظهر في قسم "عمليات التنزيل".

السعر الحالة

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

استهداف البلدان

عند تحميل تطبيقك إلى Google Play، يمكنك اختيار البلدان التي تريد توزيع تطبيقك فيها ضمن الأسعار والتوزيع. وسيصبح التطبيق بعد ذلك متاحًا للمستخدمين في البُلدان التي تختارها فقط.

بنية وحدة المعالجة المركزية (ABI)

لا يظهر التطبيق الذي يتضمّن مكتبات برمجية أصلية تستهدف بنية وحدة معالجة مركزية معيّنة (مثل ARM EABI v7 أو x86) إلا على الأجهزة المتوافقة مع هذه البنية. لمعرفة التفاصيل حول حزمة NDK واستخدام المكتبات الأصلية، يُرجى الاطّلاع على ما هو حزمة NDK لنظام التشغيل Android؟

التطبيقات المحمية ضد النسخ

لم يعُد Google Play يتيح ميزة "الحماية من النسخ" في Play Console، ولم يعُد يفرِّز التطبيقات استنادًا إليها. لتأمين تطبيقك، يُرجى استخدام ترخيص التطبيقات بدلاً من ذلك. اطّلِع على ميزة "استبدال ميزة حماية النسخ" للحصول على مزيد من المعلومات.

نشر حِزم APK متعددة باستخدام فلاتر مختلفة

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

لا يسمح لك Google Play حاليًا بنشر حِزم APK متعددة للتطبيق نفسه إلا عندما يوفّر كل حِزمة APK فلاتر مختلفة استنادًا إلى الإعدادات التالية:

لا تزال جميع الفلاتر الأخرى تعمل كالمعتاد، ولكن هذه الفلاتر الأربعة هي الفلاتر الوحيدة التي يمكنها تمييز حزمة APK عن غيرها ضمن بطاقة بيانات التطبيق نفسها على Google Play. على سبيل المثال، لا يمكنك نشر حِزم APK متعددة للتطبيق نفسه إذا كانت حِزم APK تختلف فقط استنادًا إلى ما إذا كان الجهاز يحتوي على كاميرا.

تحذير: يُعدّ نشر حِزم APK متعددة للتطبيق نفسه ميزة متقدّمة، ويجب أن تنشر معظم التطبيقات حِزمة APK واحدة فقط تتوافق مع مجموعة كبيرة من إعدادات الأجهزة. يتطلّب نشر حِزم APK متعددة اتّباع قواعد محدّدة ضمن فلاترك، كما يتطلّب الانتباه بشكل خاص إلى رموز الإصدار لكل حزمة APK لضمان مسارات التحديث المناسبة لكلّ إعداد.

إذا كنت بحاجة إلى مزيد من المعلومات حول كيفية نشر حِزم APK متعددة على Google Play، يُرجى الاطّلاع على مقالة إتاحة حِزم APK متعددة.

انظر أيضًا

  1. التوافق مع Android
  2. إتاحة حِزم APK متعددة