راهنمای دسترسیهای یک برنامه
دسترسیهای یک برنامه یا Application Permissions برای اپلیکیشن کنترل و دسترسی به منابع مورد نیاز بر روی دستگاه کاربر را فراهم کرده و در عین حال دسترسی اپلیکیشن به اطلاعات و منابع حساس بر روی دستگاه کاربر را محدود میکند. دسترسیها به طور همزمان، به کاربران کنترل کاملتر و آگاهی بیشتری از سطح دسترسی یک اپلیکیشن به منابع دستگاه اندرویدی ایشان میدهد.
در زمان ساخت نسخه برنامه، دسترسیها (Permissions) توسط توسعهدهنده در مانیفست (Manifest) تعریف شده و قرار میگیرند. دسترسیهایی مانند موقعیت مکانی، دسترسی به دوربین و میکروفون و حافظه داخلی گوشی کاربر. این دسترسیها بر اساس عملکرد و نیازهای برنامه و توسط توسعهدهنده اندرویدی برنامه ایجاد شده و به طور مثال زمانی که در یک برنامه، نیاز به دسترسی به دوربین کاربر برای گرفتن عکس (به طور مثال یک برنامه ویرایش تصویر) وجود داشته باشد، دسترسی به دوربین توسط برنامهنویس در لیست دسترسیهای نسخه برنامه قرار خواهد گرفت.
به عنوان مثال، دسترسی دوربین به این صورت است:
android.permission.CAMERA
به زبان سادهتر، دسترسیهای یک اپلیکیشن، مجوزهایی هستند که از سمت دستگاه کاربر به یک برنامه داده میشود تا به منابع یا اطلاعات مشخصی بر روی گوشی، دسترسی داشته و از آنها استفاده نمایند. اپلیکیشنهای اندرویدی برای عملکرد صحیح خود به این دسترسیها نیاز داشته و بدون داشتن دسترسی مورد نیاز خود، امکان داشتن عملکرد صحیح را از دست خواهند داد.
از طرف دیگر، دسترسیهای تعریف شده برای یک اپلیکیشن بایستی مطابق با عملکرد آن اپلیکیشن بوده و واقعا به دسترسیهای تعریف شده، نیاز داشته باشد. در غیر این صورت، از انتشار اپلیکیشن مورد نظر در مایکت، جلوگیری خواهد شد.
بررسی دسترسیها توسط کارشناس بررسی کننده برنامه
بر این اساس، برخی از این دسترسیها از نظر مایکت، به عنوان دسترسیهای حساس شناخته شده و در صورت وجود این دسترسیها در نسخه اپلیکیشن ارسال شده، کارشناس بررسی کننده برنامه عملکرد برنامه یا بازی ارسال شده را بررسی کرده و اطمینان پیدا میکند که برنامه یا بازی مورد نظر، برای عملکرد و ارائه سرویس به کاربران، به آن دسترسی نیاز داشته باشد.
در صورتی که کارشناس پس از بررسی اپلیکیشن و لیست دسترسیها به این نتیجه برسد که یک یا چند دسترسی حساس در نسخه قرار داده شده که با عملکرد و کارکرد برنامه یا بازی ارسال شده، مغایرت داشته و اپلیکیشن نیازی به آن دسترسی ندارد، از انتشار نسخه بارگذاری شده جلوگیری کرده و این مورد را در قسمت «نتیجه بررسی برنامه» به اطلاع توسعهدهنده میرساند.
توسعهدهنده برنامه در این مرحله باید این مورد را بررسی کرده و دسترسی یا دسترسیهایی که با عملکرد اپلیکیشن ایشان مغایرت دارد را از نسخه برنامه خود حذف نماید.
مهمترین دسترسیهای حساس
- ACCESS_FINE_LOCATION (GPS Location)
این دسترسی به اپلیکیشنها اجازه میدهد که موقعیت دقیق کاربر را از طریق GPS و منابع دیگر مانند Wi-Fi و آنتنهای سلولی دریافت کنند. برای اپلیکیشنهای مسیریابی و ردیابی موقعیت ضروری است.
حتماً مطمئن شوید که از این دسترسی تنها در موارد ضروری استفاده کنید و از درخواست موقعیت تنها در هنگام نیاز استفاده نمایید. برای کاهش مصرف باتری، از LocationManager یا FusedLocationProviderClient برای دریافت موقعیت استفاده کنید.
- ACCESS_COARSE_LOCATION (Network-based Location)
این دسترسی به اپلیکیشنها اجازه میدهد که موقعیت تقریبی کاربر را از طریق شبکههای سلولی یا Wi-Fi دریافت کنند. برای اپلیکیشنهای مبتنی بر مکان یا تبلیغات هدفمند مفید است.
این دسترسی نیازمند دقت کمتری است نسبت به دسترسی دقیق موقعیت (ACCESS_FINE_LOCATION). برای استفاده بهینه، از LocationManager یا FusedLocationProviderClient استفاده کنید که بهطور هوشمند موقعیت را از منابع مختلف بهطور ترکیبی بهدست میآورد.
- READ_EXTERNAL_STORAGE
این دسترسی به اپلیکیشنها اجازه میدهد که به دادههای موجود بر روی حافظه خارجی (مانند کارت SD) دسترسی پیدا کنند. برای ذخیرهسازی عکسها، ویدیوها، و سایر فایلها مورد استفاده قرار میگیرد.
- WRITE_EXTERNAL_STORAGE
این دسترسی به اپلیکیشنها اجازه میدهد که فایلهای جدیدی را بر روی حافظه خارجی ذخیره کنند. این برای اپلیکیشنهایی که نیاز به ذخیرهسازی دادهها دارند، مانند اپلیکیشنهای عکس و ویدیو ضروری است.
- CAMERA
این دسترسی به اپلیکیشنها اجازه میدهد که از دوربین دستگاه برای گرفتن عکس یا فیلم استفاده کنند. برای اپلیکیشنهای دوربین، اسکنر بارکد، یا واقعیت افزوده ضروری است.
استفاده از Camera2 API به شما این امکان را میدهد که کنترل دقیقتری بر دوربین داشته باشید. همچنین، توجه داشته باشید که دسترسی به دوربین ممکن است نیاز به مجوزهای اضافی در نسخههای جدیدتر داشته باشد.
- BILLING (In-App Purchases)
این دسترسی به اپلیکیشنها اجازه میدهد که خریدهای درونبرنامهای را انجام دهند. برای پردازش تراکنشهای مالی و خرید محصولات درونبرنامهای ضروری است.
به صورت کلی، مارکتهای اندرویدی، دسترسی پرداخت مختص به خود را دارند که در کنار SDK پرداخت درون برنامهای، امکان استفاده از پرداخت درون برنامهای را در اپلیکیشن مورد نظر فراهم میکنند.
دسترسی پرداخت مایکت به صورت زیر است:
ir.mservices.market.BILLING
از این دسترسی صرفا در زمانی استفاده نمایید که از SDK پرداخت درون برنامهای مایکت، در برنامه خود استفاده کرده و برنامه یا بازی شما، دارای پرداخت درون برنامهای است.امکان استفاده از دسترسی پرداخت سایر مارکتهای اندرویدی در نسخهای که برای مایکت بارگذاری و ثبت میکنید وجود ندارد.
- READ_CONTACTS
این دسترسی به اپلیکیشنها اجازه میدهد که به مخاطبین موجود در دفترچه تلفن کاربر دسترسی پیدا کنند. این دسترسی در اپلیکیشنهای پیامرسان یا شبکههای اجتماعی برای اضافه کردن خودکار مخاطبین به فهرست دوستان کاربرد دارد.
اگر از این دسترسی استفاده میکنید، از کاربران بخواهید که فقط در صورت نیاز به اطلاعات خاص، این دسترسی را مجاز کنند.
- WRITE_CONTACTS
این دسترسی به اپلیکیشنها اجازه میدهد که اطلاعات موجود در دفترچه تلفن کاربر را ویرایش کنند. برای اپلیکیشنهایی که نیاز به بهروزرسانی یا افزودن مخاطبین دارند، مانند اپلیکیشنهای مدیریت مخاطبین یا شبکههای اجتماعی مفید است.
- RECEIVE_SMS
این دسترسی به اپلیکیشنها اجازه میدهد که پیامهای متنی دریافتی را دریافت کنند. برای اپلیکیشنهای پیامرسان یا بانکداری تلفن همراه ضروری است.
- READ_SMS
این دسترسی به اپلیکیشنها اجازه میدهد که پیامهای متنی (SMS) دریافتی را خوانده و تحلیل کنند. این برای اپلیکیشنهایی که نیاز به دریافت پیامهای تأییدی دارند، مانند اپلیکیشنهای بانکی یا تأیید هویت دو مرحلهای ضروری است.
- SEND_SMS
پیامهای متنی را ارسال میکند. برای اپلیکیشنهای ارتباطی یا برنامههای ارسال پیام ضروری است.
- READ_CALL_LOG
این دسترسی به اپلیکیشنها اجازه میدهد که تاریخچه تماسها را بررسی کنند. این میتواند برای اپلیکیشنهایی که به اطلاعات تماسهای قبلی نیاز دارند، مانند اپلیکیشنهای ارتباطی یا تجزیه و تحلیل تماسها کاربردی باشد.
- CALL_PHONE
این دسترسی به اپلیکیشنها اجازه میدهد که تماسهای تلفنی برقرار کنند. برای اپلیکیشنهای تماس یا برنامههایی که نیاز به شمارهگیری بهطور خودکار دارند، مانند اپلیکیشنهای پشتیبانی مشتری ضروری است
- ACCESS_NOTIFICATION_POLICY (Notification Access)
این دسترسی به اپلیکیشنها اجازه میدهد که به سیاستهای اعلان دستگاه دسترسی پیدا کنند و اعلانها را مدیریت کنند. این برای اپلیکیشنهایی که نیاز به دسترسی به اعلانها دارند، مانند اپلیکیشنهای امنیتی یا مدیریت اعلانها مفید است.
- ACCESS_BACKGROUND_LOCATION
این دسترسی به اپلیکیشنها اجازه میدهد که موقعیت مکانی کاربر را در پسزمینه، حتی زمانی که اپلیکیشن در حال استفاده نیست، ردیابی کنند. این برای اپلیکیشنهای ردیابی فعالیتهای ورزشی یا خدمات موقعیتیابی که نیاز دارند موقعیت کاربر را در تمام زمانها جمعآوری کنند، ضروری است.
- RECORD_AUDIO
این دسترسی به اپلیکیشنها اجازه میدهد از میکروفن دستگاه برای ضبط صدا استفاده کنند. برای اپلیکیشنهایی که به ضبط صدا نیاز دارند، مانند پیامرسانها یا اپلیکیشنهای یادداشت صوتی، ضروری است.
- READ_CALENDAR
این دسترسی به اپلیکیشنها اجازه میدهد تا به تقویم کاربر دسترسی پیدا کنند و رویدادها را مشاهده کنند. این برای اپلیکیشنهایی که نیاز دارند از اطلاعات تقویم برای مدیریت رویدادها یا یادآوریها استفاده کنند، مانند اپلیکیشنهای مدیریت زمان، ضروری است.
- USE_FINGERPRINT
این دسترسی به اپلیکیشنها اجازه میدهد که از سنسور اثر انگشت برای تأیید هویت کاربر استفاده کنند. برای اپلیکیشنهایی که از سیستم بیومتریک برای ورود به حسابها یا انجام تراکنشها استفاده میکنند، ضروری است.
- USE_BIOMETRIC
این دسترسی به اپلیکیشنها اجازه میدهد که از روشهای احراز هویت بیومتریک مانند اثر انگشت یا شناسایی صورت برای تأیید هویت کاربران استفاده کنند. این روشها معمولاً برای تأمین امنیت بیشتر در اپلیکیشنهای حساس مانند بانکداری موبایل یا پرداختهای آنلاین بهکار میروند.
- USE_BIOMETRIC_AUTHENTICATION
این دسترسی به اپلیکیشنها اجازه میدهد که از روشهای احراز هویت بیومتریک مانند اثر انگشت یا شناسایی صورت برای تأیید هویت کاربران استفاده کنند. این روشها معمولاً برای افزایش امنیت در اپلیکیشنهای پرداخت، بانکی، یا مدیریت اطلاعات حساس استفاده میشوند.
- INSTALL_PACKAGES
این دسترسی به اپلیکیشنها اجازه میدهد که، بستههای APK را بهطور مستقیم و بدون تایید نصب توسط کاربر نصب کند. این دسترسی صرفا توسط برخی برنامههای سیستمی اندروید مورد استفاده قرار گرفته و سایر برنامهها یا بازیها، مجاز به استفاده از آن نیستند.
- REQUEST_INSTALL_PACKAGES
این دسترسی به اپلیکیشنها اجازه میدهد که، بستههای APK را بهطور مستقیم و با تایید نصب توسط کاربر نصب کند. این دسترسی برای اپلیکیشنهایی که نیاز دارند برنامهها را بدون دخالت کاربر نصب کنند، مانند اپلیکیشنهای مدیریت دانلود یا برنامههای پیام رسان، ضروری است.
- QUERY_ALL_PACKAGES
این دسترسی به اپلیکیشنها این امکان را میدهد که لیست تمام بستههای نصب شده روی دستگاه را بررسی کنند. این دسترسی میتواند برای کارهایی مثل شناسایی برنامههای نصبشده، تعامل بین اپلیکیشنها و یا مدیریت اپلیکیشنها استفاده شود. این دسترسی معمولاً توسط اپلیکیشنهای مدیر فایل، ابزارهای امنیتی یا برنامههای مدیریت اپلیکیشن استفاده میشود.
در صورتی که در مورد دسترسی برنامه و روند پیادهسازی آن سوال دارید، میتوانید از طریق بخش «تیکتها» در پنل توسعهدهندگان مایکت، با پشتیبانی توسعهدهندگان مایکت در ارتباط باشید.