فیلترها در گوگل پلی

وقتی کاربر برنامه‌هایی را برای دانلود در Google Play جستجو یا مرور می‌کند، نتایج بر اساس اینکه کدام برنامه‌ها با دستگاه سازگار هستند فیلتر می‌شوند. برای مثال، اگر یک برنامه به دوربین نیاز دارد، Google Play برنامه را به دستگاه‌هایی که دوربین ندارند نشان نمی‌دهد. این فیلتر به توسعه دهندگان کمک می کند تا توزیع برنامه های خود را مدیریت کنند و به کاربران کمک می کند تا بهترین تجربه ممکن را داشته باشند.

فیلتر کردن در Google Play بر اساس چندین نوع فراداده برنامه و تنظیمات پیکربندی است، از جمله اعلان‌های مانیفست، کتابخانه‌های مورد نیاز، وابستگی‌های معماری، و کنترل‌های توزیع تنظیم‌شده در کنسول Google Play، مانند هدف‌گیری جغرافیایی، قیمت‌گذاری و موارد دیگر.

فیلتر Google Play تا حدی بر اساس اعلامیه‌های مانیفست و سایر جنبه‌های چارچوب Android است، اما رفتارهای فیلتر واقعی از چارچوب متمایز است و به سطوح API خاصی محدود نمی‌شود. این سند قوانین فیلتر فعلی مورد استفاده توسط 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 عناصر مانیفست را که باید برای راه اندازی فیلتر کردن استفاده کنید فهرست می کند و نحوه عملکرد فیلتر برای هر عنصر را توضیح می دهد.

جدول 1. عناصری را که باعث فیلتر شدن در Google Play می شوند را نشان دهید.

عنصر آشکار نام فیلتر چگونه کار می کند
<supports-screens> اندازه صفحه نمایش

یک برنامه با تنظیم ویژگی‌های عنصر <supports-screens> اندازه‌های صفحه‌ای را که می‌تواند پشتیبانی کند، نشان می‌دهد. هنگامی که برنامه منتشر می شود، Google Play از این ویژگی ها برای تعیین اینکه آیا برنامه را به کاربران بر اساس اندازه صفحه نمایش دستگاه هایشان نشان می دهد یا خیر، استفاده می کند.

به عنوان یک قاعده کلی، Google Play فرض می‌کند که پلتفرم روی دستگاه می‌تواند طرح‌بندی‌های کوچک‌تر را با صفحه‌های بزرگ‌تر تطبیق دهد، اما نمی‌تواند طرح‌بندی‌های بزرگ‌تر را با صفحه‌های کوچک‌تر تطبیق دهد. بنابراین، اگر برنامه ای فقط از اندازه صفحه نمایش "عادی" پشتیبانی کند، Google Play برنامه را برای دستگاه های معمولی و بزرگ در دسترس قرار می دهد، اما برنامه را فیلتر می کند تا برای دستگاه های صفحه کوچک در دسترس نباشد.

اگر یک برنامه ویژگی‌ها را برای <supports-screens> اعلام نکند، Google Play از مقادیر پیش‌فرض برای آن ویژگی‌ها استفاده می‌کند که بر اساس سطح API متفاوت است. به طور مشخص:

  • برای برنامه‌هایی که 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> و Supporting Multiple 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 (سطح 5 API) معرفی شد.

مثال 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 برنامه را به کاربر نشان می‌دهد، مگر اینکه فیلترهای دیگری اعمال شوند. اگر دستگاهی گزارش دهد که از OpenGL-ES نسخه X پشتیبانی می‌کند، 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> اعلان نشده باشد. به عنوان مثال، اگر برنامه‌ای مجوز CAMERA درخواست کند اما عنصر <uses-feature> را برای android.hardware.camera اعلام نکند، Google Play در نظر می‌گیرد که برنامه به دوربین نیاز دارد و نباید به کاربرانی که دستگاه‌هایشان یک دوربین ارائه نمی‌دهند نشان داده شود. دوربین

به طور کلی، اگر برنامه‌ای مجوزهای مربوط به سخت‌افزار را درخواست کند، Google Play فرض می‌کند که برنامه به ویژگی‌های سخت‌افزار اساسی نیاز دارد، حتی اگر هیچ متناظری با اعلان‌های <uses-feature> وجود نداشته باشد. سپس Google Play فیلتر را بر اساس ویژگی‌هایی که در اعلان‌های <uses-feature> ذکر شده است تنظیم می‌کند.

برای فهرستی از مجوزهایی که دلالت بر ویژگی های سخت افزاری دارند، به مستندات عنصر <uses-feature> مراجعه کنید.

<uses-sdk> حداقل نسخه چارچوب ( minSdkVersion )

یک برنامه ممکن است به حداقل سطح API نیاز داشته باشد.

مثال 1
مانیفست شامل <uses-sdk android:minSdkVersion="3"> است، و برنامه از API هایی استفاده می کند که در سطح 3 API معرفی شده اند. کاربر در حال جستجوی برنامه ها در دستگاهی است که دارای API سطح 2 است. نتیجه : Google Play نمی کند برنامه را به کاربر نشان دهید.

مثال 2
مانیفست شامل minSdkVersion نیست و برنامه از APIهایی استفاده می‌کند که در سطح 3 API معرفی شده‌اند. کاربر در حال جستجوی برنامه‌ها در دستگاهی است که دارای API سطح 2 است. نتیجه : Google Play فرض می‌کند که minSdkVersion "1" است و این برنامه با تمامی نسخه های اندروید سازگار است. گوگل پلی برنامه را به کاربر نشان می دهد و به کاربر اجازه می دهد برنامه را دانلود کند. برنامه در زمان اجرا از کار می افتد.

از آنجایی که می‌خواهید از این سناریوی دوم اجتناب کنید، توصیه می‌کنیم همیشه یک minSdkVersion را اعلام کنید. برای جزئیات، android:minSdkVersion ببینید.

حداکثر نسخه چارچوب ( maxSdkVersion )

منسوخ شده است. Android نسخه 2.1 و بالاتر، ویژگی maxSdkVersion را بررسی یا اجرا نکنید، و اگر maxSdkVersion در مانیفست برنامه تنظیم شده باشد، SDK کامپایل نخواهد شد. برای دستگاه‌هایی که قبلاً با maxSdkVersion کامپایل شده‌اند، Google Play به آن احترام گذاشته و از آن برای فیلتر کردن استفاده می‌کند.

اعلام maxSdkVersion توصیه نمی شود. برای جزئیات، android:maxSdkVersion ببینید.

فیلترهای مانیفست پیشرفته

علاوه بر عناصر مانیفست در جدول 1 ، Google Play همچنین می تواند برنامه ها را بر اساس عناصر پیشرفته مانیفست در جدول 2 فیلتر کند.

این عناصر مانیفست و فیلتری که ایجاد می کنند فقط برای موارد استفاده استثنایی هستند. این‌ها برای انواع خاصی از بازی‌های با کارایی بالا و برنامه‌های مشابه طراحی شده‌اند که نیاز به کنترل‌های دقیق در توزیع برنامه‌ها دارند. اکثر برنامه ها هرگز نباید از این فیلترها استفاده کنند .

جدول 2. عناصر مانیفست پیشرفته برای فیلتر کردن Google Play.

عنصر آشکار خلاصه
<compatible-screens>

اگر اندازه و تراکم صفحه دستگاه با هیچ یک از پیکربندی‌های صفحه نمایش (اعلام شده توسط عنصر <screen> ) در عنصر <compatible-screens> مطابقت نداشته باشد، Google Play برنامه را فیلتر می‌کند.

احتیاط: به طور معمول، نباید از این عنصر مانیفست استفاده کنید . استفاده از این عنصر می تواند به طور چشمگیری پایگاه کاربر بالقوه را برای برنامه شما کاهش دهد، با حذف تمام ترکیبات اندازه و تراکم صفحه نمایش که لیست نکرده اید. در عوض باید از عنصر مانیفست <supports-screens> (که در جدول 1 در بالا توضیح داده شده است) استفاده کنید تا حالت سازگاری صفحه را برای پیکربندی‌های صفحه‌ای که با منابع جایگزین در نظر نگرفته‌اید فعال کنید.

<supports-gl-texture>

Google Play برنامه را فیلتر می کند مگر اینکه یک یا چند فرمت فشرده سازی بافت GL که توسط برنامه پشتیبانی می شود توسط دستگاه نیز پشتیبانی شود.

فیلترهای دیگر

Google Play از سایر ویژگی‌های برنامه استفاده می‌کند تا مشخص کند برنامه‌ای را برای یک کاربر خاص در یک دستگاه خاص نشان می‌دهد یا پنهان می‌کند، همانطور که در جدول زیر توضیح داده شده است.

جدول 3. ویژگی های برنامه و انتشار که بر فیلتر کردن در Google Play تأثیر می گذارد.

نام فیلتر چگونه کار می کند
وضعیت انتشار

فقط برنامه های منتشر شده در جستجوها و مرور در Google Play ظاهر می شوند.

حتی اگر برنامه‌ای منتشر نشده باشد، اگر کاربران بتوانند آن را در قسمت دانلودها در بین برنامه‌های خریداری‌شده، نصب‌شده یا اخیراً حذف نصب شده‌شان ببینند، می‌توان آن را نصب کرد.

اگر برنامه‌ای به حالت تعلیق درآمده باشد، کاربران نمی‌توانند آن را دوباره نصب یا به‌روزرسانی کنند، حتی اگر در دانلودهایشان ظاهر شود.

وضعیت قیمت

همه کاربران نمی توانند برنامه های پولی را ببینند. برای نمایش برنامه‌های پولی، دستگاه باید دارای Android نسخه ۱.۱ یا جدیدتر باشد و باید در کشوری باشد که برنامه‌های پولی در آن موجود است. اگر دستگاهی دارای سیم کارت باشد، شرکت مخابراتی سیم کارت تعیین می کند که آیا برنامه های پولی در دسترس هستند یا خیر. اگر دستگاهی سیم کارت نداشته باشد، از آدرس IP دستگاه برای تعیین اینکه آیا دستگاه در کشوری است که برنامه‌های پولی در آن موجود است یا خیر استفاده می‌شود.

هدف گذاری کشور

هنگامی که برنامه خود را در Google Play آپلود می‌کنید، می‌توانید کشورهایی را که برنامه خود را در آنها توزیع کنید، در قسمت قیمت‌گذاری و توزیع انتخاب کنید. سپس این برنامه تنها در کشورهایی که شما انتخاب کرده اید برای کاربران در دسترس خواهد بود.

معماری CPU (ABI)

برنامه‌ای که شامل کتابخانه‌های بومی است که معماری خاص CPU را هدف قرار می‌دهند (برای مثال ARM EABI v7 یا x86) فقط در دستگاه‌هایی که از آن معماری پشتیبانی می‌کنند قابل مشاهده است. برای جزئیات بیشتر در مورد NDK و استفاده از کتابخانه های بومی، نگاه کنید به Android NDK چیست؟

برنامه های کاربردی محافظت شده از کپی

Google Play دیگر از قابلیت Copy Protection در کنسول Play پشتیبانی نمی کند و دیگر برنامه ها را بر اساس آن فیلتر نمی کند. برای ایمن سازی برنامه خود، لطفاً به جای آن از Application Licensing استفاده کنید. برای اطلاعات بیشتر به Replacement for Copy Protection مراجعه کنید.

انتشار چندین APK با فیلترهای مختلف

برخی از فیلترهای خاص Google Play به شما امکان می دهند چندین APK را برای یک برنامه منتشر کنید تا یک APK متفاوت برای پیکربندی های مختلف دستگاه ارائه کنید. به عنوان مثال، اگر در حال ایجاد یک بازی ویدیویی هستید که از دارایی های گرافیکی با کیفیت بالا استفاده می کند، ممکن است بخواهید دو APK ایجاد کنید که هر کدام از فرمت های فشرده سازی بافت متفاوتی پشتیبانی می کنند. به این ترتیب، می‌توانید اندازه فایل APK را با گنجاندن بافت‌هایی که برای هر پیکربندی دستگاه لازم است، کاهش دهید. بسته به پشتیبانی هر دستگاه از فرمت‌های فشرده‌سازی بافت شما، Google Play APK را که اعلام کرده‌اید از آن دستگاه پشتیبانی می‌کند، به آن تحویل می‌دهد.

در حال حاضر، Google Play به شما اجازه می‌دهد چندین APK را برای یک برنامه منتشر کنید، تنها زمانی که هر APK فیلترهای متفاوتی را بر اساس پیکربندی‌های زیر ارائه می‌کند:

  • فرمت های فشرده سازی بافت OpenGL

    با استفاده از عنصر <supports-gl-texture> .

  • اندازه صفحه نمایش (و در صورت تمایل، تراکم صفحه نمایش)

    با استفاده از عنصر <supports-screens> یا <compatible-screens> .

  • سطح API

    با استفاده از عنصر <uses-sdk> .

  • معماری CPU (ABI)

    با گنجاندن کتابخانه های بومی ساخته شده با Android NDK که معماری خاص CPU را هدف قرار می دهند (برای مثال ARM EABI v7 یا x86).

همه فیلترهای دیگر همچنان مانند همیشه کار می کنند، اما این چهار فیلتر تنها فیلترهایی هستند که می توانند یک APK را از دیگری در فهرست برنامه های مشابه در Google Play متمایز کنند. برای مثال، اگر فایل‌های APK فقط بر اساس دوربین بودن دستگاه متفاوت هستند، نمی‌توانید چندین APK را برای یک برنامه منتشر کنید.

احتیاط: انتشار چندین APK برای یک برنامه یک ویژگی پیشرفته در نظر گرفته می‌شود و اکثر برنامه‌ها باید فقط یک APK را منتشر کنند که از طیف گسترده‌ای از پیکربندی‌های دستگاه پشتیبانی می‌کند . انتشار چندین APK مستلزم این است که قوانین خاصی را در فیلترهای خود دنبال کنید و به کدهای نسخه برای هر APK توجه بیشتری داشته باشید تا از مسیرهای به روز رسانی مناسب برای هر پیکربندی اطمینان حاصل کنید.

اگر به اطلاعات بیشتری در مورد نحوه انتشار چندین APK در Google Play نیاز دارید، پشتیبانی از چند APK را بخوانید.

همچنین ببینید
  1. سازگاری اندروید
  2. پشتیبانی از چندین APK
،

وقتی کاربر برنامه‌هایی را برای دانلود در Google Play جستجو یا مرور می‌کند، نتایج بر اساس اینکه کدام برنامه‌ها با دستگاه سازگار هستند فیلتر می‌شوند. برای مثال، اگر یک برنامه به دوربین نیاز دارد، Google Play برنامه را به دستگاه‌هایی که دوربین ندارند نشان نمی‌دهد. این فیلتر به توسعه دهندگان کمک می کند تا توزیع برنامه های خود را مدیریت کنند و به کاربران کمک می کند تا بهترین تجربه ممکن را داشته باشند.

فیلتر کردن در Google Play بر اساس چندین نوع فراداده برنامه و تنظیمات پیکربندی است، از جمله اعلان‌های مانیفست، کتابخانه‌های مورد نیاز، وابستگی‌های معماری، و کنترل‌های توزیع تنظیم‌شده در کنسول Google Play، مانند هدف‌گیری جغرافیایی، قیمت‌گذاری و موارد دیگر.

فیلتر Google Play تا حدی بر اساس اعلامیه‌های مانیفست و سایر جنبه‌های چارچوب Android است، اما رفتارهای فیلتر واقعی از چارچوب متمایز است و به سطوح API خاصی محدود نمی‌شود. این سند قوانین فیلتر فعلی مورد استفاده توسط 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 عناصر مانیفست را که باید برای راه اندازی فیلتر کردن استفاده کنید فهرست می کند و نحوه عملکرد فیلتر برای هر عنصر را توضیح می دهد.

جدول 1. عناصری را که باعث فیلتر شدن در Google Play می شوند را نشان دهید.

عنصر آشکار نام فیلتر چگونه کار می کند
<supports-screens> اندازه صفحه نمایش

یک برنامه با تنظیم ویژگی‌های عنصر <supports-screens> اندازه‌های صفحه‌ای را که می‌تواند پشتیبانی کند، نشان می‌دهد. هنگامی که برنامه منتشر می شود، Google Play از این ویژگی ها برای تعیین اینکه آیا برنامه را به کاربران بر اساس اندازه صفحه نمایش دستگاه هایشان نشان می دهد یا خیر، استفاده می کند.

به عنوان یک قاعده کلی، Google Play فرض می‌کند که پلتفرم روی دستگاه می‌تواند طرح‌بندی‌های کوچک‌تر را با صفحه‌های بزرگ‌تر تطبیق دهد، اما نمی‌تواند طرح‌بندی‌های بزرگ‌تر را با صفحه‌های کوچک‌تر تطبیق دهد. بنابراین، اگر برنامه ای فقط از اندازه صفحه نمایش "عادی" پشتیبانی کند، Google Play برنامه را برای دستگاه های معمولی و بزرگ در دسترس قرار می دهد، اما برنامه را فیلتر می کند تا برای دستگاه های صفحه کوچک در دسترس نباشد.

اگر یک برنامه ویژگی‌ها را برای <supports-screens> اعلام نکند، Google Play از مقادیر پیش‌فرض برای آن ویژگی‌ها استفاده می‌کند که بر اساس سطح API متفاوت است. به طور مشخص:

  • برای برنامه‌هایی که 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> و Supporting Multiple 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 (سطح 5 API) معرفی شد.

مثال 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 برنامه را به کاربر نشان می‌دهد، مگر اینکه فیلترهای دیگری اعمال شوند. اگر دستگاهی گزارش دهد که از OpenGL-ES نسخه X پشتیبانی می‌کند، 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> اعلان نشده باشد. به عنوان مثال، اگر برنامه‌ای مجوز CAMERA درخواست کند اما عنصر <uses-feature> را برای android.hardware.camera اعلام نکند، Google Play در نظر می‌گیرد که برنامه به دوربین نیاز دارد و نباید به کاربرانی که دستگاه‌هایشان یک دوربین ارائه نمی‌دهند نشان داده شود. دوربین

به طور کلی، اگر برنامه‌ای مجوزهای مربوط به سخت‌افزار را درخواست کند، Google Play فرض می‌کند که برنامه به ویژگی‌های سخت‌افزار اساسی نیاز دارد، حتی اگر هیچ متناظری با اعلان‌های <uses-feature> وجود نداشته باشد. سپس Google Play فیلتر را بر اساس ویژگی‌هایی که در اعلان‌های <uses-feature> ذکر شده است تنظیم می‌کند.

برای فهرستی از مجوزهایی که دلالت بر ویژگی های سخت افزاری دارند، به مستندات عنصر <uses-feature> مراجعه کنید.

<uses-sdk> حداقل نسخه چارچوب ( minSdkVersion )

یک برنامه ممکن است به حداقل سطح API نیاز داشته باشد.

مثال 1
مانیفست شامل <uses-sdk android:minSdkVersion="3"> است، و برنامه از API هایی استفاده می کند که در سطح 3 API معرفی شده اند. کاربر در حال جستجوی برنامه ها در دستگاهی است که دارای API سطح 2 است. نتیجه : Google Play نمی کند برنامه را به کاربر نشان دهید.

مثال 2
مانیفست شامل minSdkVersion نیست و برنامه از APIهایی استفاده می‌کند که در سطح 3 API معرفی شده‌اند. کاربر در حال جستجوی برنامه‌ها در دستگاهی است که دارای API سطح 2 است. نتیجه : Google Play فرض می‌کند که minSdkVersion "1" است و این برنامه با تمامی نسخه های اندروید سازگار است. گوگل پلی برنامه را به کاربر نشان می دهد و به کاربر اجازه می دهد برنامه را دانلود کند. برنامه در زمان اجرا از کار می افتد.

از آنجایی که می‌خواهید از این سناریوی دوم اجتناب کنید، توصیه می‌کنیم همیشه یک minSdkVersion را اعلام کنید. برای جزئیات، android:minSdkVersion ببینید.

حداکثر نسخه چارچوب ( maxSdkVersion )

منسوخ شده است. Android نسخه 2.1 و بالاتر، ویژگی maxSdkVersion را بررسی یا اجرا نکنید، و اگر maxSdkVersion در مانیفست برنامه تنظیم شده باشد، SDK کامپایل نخواهد شد. برای دستگاه‌هایی که قبلاً با maxSdkVersion کامپایل شده‌اند، Google Play به آن احترام گذاشته و از آن برای فیلتر کردن استفاده می‌کند.

اعلام maxSdkVersion توصیه نمی شود. برای جزئیات، android:maxSdkVersion ببینید.

فیلترهای مانیفست پیشرفته

علاوه بر عناصر مانیفست در جدول 1 ، Google Play همچنین می تواند برنامه ها را بر اساس عناصر پیشرفته مانیفست در جدول 2 فیلتر کند.

این عناصر مانیفست و فیلتری که ایجاد می کنند فقط برای موارد استفاده استثنایی هستند. این‌ها برای انواع خاصی از بازی‌های با کارایی بالا و برنامه‌های مشابه طراحی شده‌اند که نیاز به کنترل‌های دقیق در توزیع برنامه‌ها دارند. اکثر برنامه ها هرگز نباید از این فیلترها استفاده کنند .

جدول 2. عناصر مانیفست پیشرفته برای فیلتر کردن Google Play.

عنصر آشکار خلاصه
<compatible-screens>

اگر اندازه و تراکم صفحه دستگاه با هیچ یک از پیکربندی‌های صفحه نمایش (اعلام شده توسط عنصر <screen> ) در عنصر <compatible-screens> مطابقت نداشته باشد، Google Play برنامه را فیلتر می‌کند.

احتیاط: به طور معمول، نباید از این عنصر مانیفست استفاده کنید . استفاده از این عنصر می تواند به طور چشمگیری پایگاه کاربر بالقوه را برای برنامه شما کاهش دهد، با حذف تمام ترکیبات اندازه و تراکم صفحه نمایش که لیست نکرده اید. در عوض باید از عنصر مانیفست <supports-screens> (که در جدول 1 در بالا توضیح داده شده است) استفاده کنید تا حالت سازگاری صفحه را برای پیکربندی‌های صفحه‌ای که با منابع جایگزین در نظر نگرفته‌اید فعال کنید.

<supports-gl-texture>

Google Play برنامه را فیلتر می کند مگر اینکه یک یا چند فرمت فشرده سازی بافت GL که توسط برنامه پشتیبانی می شود توسط دستگاه نیز پشتیبانی شود.

فیلترهای دیگر

Google Play از سایر ویژگی‌های برنامه استفاده می‌کند تا مشخص کند برنامه‌ای را برای یک کاربر خاص در یک دستگاه خاص نشان می‌دهد یا پنهان می‌کند، همانطور که در جدول زیر توضیح داده شده است.

جدول 3. ویژگی های برنامه و انتشار که بر فیلتر کردن در Google Play تأثیر می گذارد.

نام فیلتر چگونه کار می کند
وضعیت انتشار

فقط برنامه های منتشر شده در جستجوها و مرور در Google Play ظاهر می شوند.

حتی اگر برنامه‌ای منتشر نشده باشد، اگر کاربران بتوانند آن را در قسمت دانلودها در بین برنامه‌های خریداری‌شده، نصب‌شده یا اخیراً حذف نصب شده‌شان ببینند، می‌توان آن را نصب کرد.

اگر برنامه‌ای به حالت تعلیق درآمده باشد، کاربران نمی‌توانند آن را دوباره نصب یا به‌روزرسانی کنند، حتی اگر در دانلودهایشان ظاهر شود.

وضعیت قیمت

همه کاربران نمی توانند برنامه های پولی را ببینند. برای نمایش برنامه‌های پولی، دستگاه باید دارای Android نسخه ۱.۱ یا جدیدتر باشد و باید در کشوری باشد که برنامه‌های پولی در آن موجود است. اگر دستگاهی دارای سیم کارت باشد، شرکت مخابراتی سیم کارت تعیین می کند که آیا برنامه های پولی در دسترس هستند یا خیر. اگر دستگاهی سیم کارت نداشته باشد، از آدرس IP دستگاه برای تعیین اینکه آیا دستگاه در کشوری است که برنامه‌های پولی در آن موجود است یا خیر استفاده می‌شود.

هدف گذاری کشور

هنگامی که برنامه خود را در Google Play آپلود می‌کنید، می‌توانید کشورهایی را که برنامه خود را در آنها توزیع کنید، در قسمت قیمت‌گذاری و توزیع انتخاب کنید. سپس این برنامه تنها در کشورهایی که شما انتخاب کرده اید برای کاربران در دسترس خواهد بود.

معماری CPU (ABI)

برنامه‌ای که شامل کتابخانه‌های بومی است که معماری خاص CPU را هدف قرار می‌دهند (برای مثال ARM EABI v7 یا x86) فقط در دستگاه‌هایی که از آن معماری پشتیبانی می‌کنند قابل مشاهده است. برای جزئیات بیشتر در مورد NDK و استفاده از کتابخانه های بومی، نگاه کنید به Android NDK چیست؟

برنامه های کاربردی محافظت شده از کپی

Google Play دیگر از قابلیت Copy Protection در کنسول Play پشتیبانی نمی کند و دیگر برنامه ها را بر اساس آن فیلتر نمی کند. برای ایمن سازی برنامه خود، لطفاً به جای آن از Application Licensing استفاده کنید. برای اطلاعات بیشتر به Replacement for Copy Protection مراجعه کنید.

انتشار چندین APK با فیلترهای مختلف

برخی از فیلترهای خاص Google Play به شما امکان می دهند چندین APK را برای یک برنامه منتشر کنید تا یک APK متفاوت برای پیکربندی های مختلف دستگاه ارائه کنید. به عنوان مثال، اگر در حال ایجاد یک بازی ویدیویی هستید که از دارایی های گرافیکی با کیفیت بالا استفاده می کند، ممکن است بخواهید دو APK ایجاد کنید که هر کدام از فرمت های فشرده سازی بافت متفاوتی پشتیبانی می کنند. به این ترتیب، می‌توانید اندازه فایل APK را با گنجاندن بافت‌هایی که برای هر پیکربندی دستگاه لازم است، کاهش دهید. بسته به پشتیبانی هر دستگاه از فرمت‌های فشرده‌سازی بافت شما، Google Play APK را که اعلام کرده‌اید از آن دستگاه پشتیبانی می‌کند، به آن تحویل می‌دهد.

در حال حاضر، Google Play به شما اجازه می‌دهد چندین APK را برای یک برنامه منتشر کنید، تنها زمانی که هر APK فیلترهای متفاوتی را بر اساس پیکربندی‌های زیر ارائه می‌کند:

  • فرمت های فشرده سازی بافت OpenGL

    با استفاده از عنصر <supports-gl-texture> .

  • اندازه صفحه نمایش (و در صورت تمایل، تراکم صفحه نمایش)

    با استفاده از عنصر <supports-screens> یا <compatible-screens> .

  • سطح API

    با استفاده از عنصر <uses-sdk> .

  • معماری CPU (ABI)

    با گنجاندن کتابخانه های بومی ساخته شده با Android NDK که معماری خاص CPU را هدف قرار می دهند (برای مثال ARM EABI v7 یا x86).

همه فیلترهای دیگر همچنان مانند همیشه کار می کنند، اما این چهار فیلتر تنها فیلترهایی هستند که می توانند یک APK را از دیگری در فهرست برنامه های مشابه در Google Play متمایز کنند. برای مثال، اگر فایل‌های APK فقط بر اساس دوربین بودن دستگاه متفاوت هستند، نمی‌توانید چندین APK را برای یک برنامه منتشر کنید.

احتیاط: انتشار چندین APK برای یک برنامه یک ویژگی پیشرفته در نظر گرفته می‌شود و اکثر برنامه‌ها باید فقط یک APK را منتشر کنند که از طیف گسترده‌ای از پیکربندی‌های دستگاه پشتیبانی می‌کند . انتشار چندین APK مستلزم این است که قوانین خاصی را در فیلترهای خود دنبال کنید و به کدهای نسخه برای هر APK توجه بیشتری داشته باشید تا از مسیرهای به روز رسانی مناسب برای هر پیکربندی اطمینان حاصل کنید.

اگر به اطلاعات بیشتری در مورد نحوه انتشار چندین APK در Google Play نیاز دارید، پشتیبانی از چند APK را بخوانید.

همچنین ببینید
  1. سازگاری اندروید
  2. پشتیبانی از چندین APK