مجوزهای دسترسی و حریم خصوصی — یکی از مهمترین و سریعترین حوزههای در حال تغییر توسعه موبایل است. طبق Apple Developer Guidelines (2025)، از زمان معرفی ATT (App Tracking Transparency) در سال 2021، میزان رضایت کاربران برای ردیابی حدود 20% است. بیایید مدلهای مجوز در iOS و Android، الزامات حریم خصوصی (ATT، Privacy Manifest، GDPR) و نکات عملی برای پیادهسازی آنها را بررسی کنیم.
نکات کلیدی
مدلهای مجوز در iOS و Android یک ایده مشترک دارند: کاربر باید برای دسترسی به دادههای حساس (دوربین، میکروفون، موقعیت مکانی، مخاطبین) رضایت دهد. با این حال، پیادهسازی تفاوت قابل توجهی دارد. Android مجوزها را در زمان استفاده (runtime) درخواست میکند، iOS نیاز به توصیف هدف در Info.plist دارد و در اولین دسترسی درخواست میکند. پیادهسازی صحیح مجوزهای دسترسی در یک برنامه موبایل، پایه امنیت و اعتماد است.
قبل از Android 6.0 (API 23)، همه مجوزها در زمان نصب درخواست میشدند — کاربر یا همه را میپذیرفت یا برنامه را نصب نمیکرد. با Android 6.0، Runtime Permissions معرفی شدند: برنامه در زمان اولین نیاز مجوز درخواست میکند و کاربر میتواند رد کند. iOS از iOS 8.0 رویکرد مشابهی استفاده میکند. درک تکامل مجوزهای دسترسی در توسعه موبایل به طراحی UX بصری کمک میکند.
در IT Sectr ما از اصل «حداقل مجوزها» پیروی میکنیم: فقط آنچه واقعاً نیاز است و فقط در زمانی که لازم است درخواست میکنیم. این اعتماد کاربران را افزایش میدهد: طبق Google (2025)، برنامههایی که بیش از 5 مجوز در اولین راهاندازی درخواست میکنند، نرخ تبدیل ثبتنام 30% کمتری دارند. این مدل مجوز دسترسی در برنامههای موبایل با تمرین ما تأیید میشود.
| پارامتر | iOS | Android |
|---|---|---|
| مکانیسم | درخواست در اولین دسترسی به منبع | درخواست در اولین دسترسی (Runtime Permission) |
| توصیف هدف | Info.plist (Privacy — Usage Description) | shouldShowRequestPermissionRationale (اختیاری) |
| لغو مجوز | تنظیمات → حریم خصوصی | تنظیمات → برنامهها → مجوزها |
| گروهبندی | خیر (هر مجوز جداگانه) | Permission Groups (مثلاً STORAGE) |
| شناسه تبلیغاتی | IDFA (نیاز به ATT) | GAID / AAID (Google Play Services) |
| حریم خصوصی | Privacy Manifest (از 2024) | Data Safety Section (Google Play) |
جدول 4. مقایسه مدلهای مجوز iOS و Android. تفاوت اصلی: iOS نیاز به توصیف متنی صریح از هدف استفاده از هر مجوز در Info.plist دارد. Android shouldShowRequestPermissionRationale را برای توضیح به کاربر ارائه میدهد که چرا مجوز لازم است. درک تفاوتهای حقوق دسترسی بین پلتفرمها به انتخاب مدل مناسب کمک میکند.
Normal Permissions — مجوزهایی که تهدیدی برای حریم خصوصی کاربر نیستند. آنها به طور خودکار در زمان نصب اعطا میشوند: INTERNET، ACCESS_NETWORK_STATE، VIBRATE، BLUETOOTH. توسعهدهنده نیازی به درخواست آنها در کد ندارد. این طبقهبندی مجوزهای دسترسی با سطح خطر حریم خصوصی مطابقت دارد.
Dangerous Permissions — مجوزهایی که نیاز به دسترسی به دادههای شخصی دارند: CAMERA، RECORD_AUDIO، ACCESS_FINE_LOCATION، READ_CONTACTS، READ_CALENDAR، READ_EXTERNAL_STORAGE. آنها نیاز به درخواست runtime دارند. Permission Group — گروهی از مجوزهای مرتبط: اگر کاربر CAMERA را مجاز کرده باشد، مجوز ضبط ویدیو (RECORD_AUDIO؟ نه، این گروه جداگانه است) — نه، CAMERA و RECORD_AUDIO در گروههای مختلفی هستند.
Runtime Permission — فراخوانی ActivityCompat.requestPermissions() در Android یا درخواست از طریق CLLocationManager.requestWhenInUseAuthorization() در iOS. کاربر میتواند پاسخ دهد: Grant (اجازه دهد)، Deny (رد کند) یا «دیگر نپرس» (در Android پس از دو بار رد). پیکربندی مجوزهای دسترسی در یک برنامه موبایل نیاز به در نظر گرفتن رفتار کاربر دارد.
Runtime Permission در Android نیاز به بررسی وضعیت فعلی قبل از هر استفاده دارد. متد shouldShowRequestPermissionRationale() اگر کاربر قبلاً رد کرده باشد true برمیگرداند — این سیگنالی برای نمایش گفتگو با توضیح است. در iOS، معادل بررسی وضعیت است: .notDetermined، .denied، .authorized، .restricted. حریم خصوصی برنامه موبایل نیاز به نظارت مستمر بر وضعیت مجوزها دارد.
// Kotlin — درخواست مجوز runtime برای دوربین
class CameraActivity : AppCompatActivity() {
companion object {
private const val CAMERA_PERMISSION_CODE = 100
}
private fun requestCameraPermission() {
when {
ContextCompat.checkSelfPermission(
this, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED -> {
openCamera()
}
shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> {
showRationaleDialog("برای اسکن کدهای QR نیاز به دسترسی به دوربین است")
}
else -> {
requestPermissions(
arrayOf(Manifest.permission.CAMERA),
CAMERA_PERMISSION_CODE
)
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
if (requestCode == CAMERA_PERMISSION_CODE &&
grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED
) {
openCamera()
}
}
}
این کد الگوی صحیح را نشان میدهد: بررسی وضعیت → نمایش توضیح (در صورت نیاز) → درخواست مجوز → پردازش نتیجه. shouldShowRequestPermissionRationale یک متد مهم است: اگر کاربر قبلاً رد کرده است، گفتگویی نشان دهید که توضیح میدهد چرا مجوز لازم است. بدون این، کاربر ممکن است به طور دائمی دسترسی را رد کند.
ATT (App Tracking Transparency) — فریمورک اپل (iOS 14.5+) که نیاز به رضایت صریح کاربر برای ردیابی دارد. بدون رضایت، IDFA (شناسه برای تبلیغکنندگان) صفر برمیگرداند. طبق Flurry (2025)، نرخ پذیرش ATT بسته به منطقه و نوع برنامه 15–25% است. مدیریت مجوزهای دسترسی در یک برنامه موبایل با انتخاب فریمورک مناسب شروع میشود.
Privacy Manifest — یک فایل اجباری (از 2024 برای برنامههای جدید، از 2025 برای بهروزرسانیها) که در آن توسعهدهنده اعلام میکند برنامه چه نوع دادههایی را و برای چه اهدافی جمعآوری میکند. اپل در طول بررسی، مطابقت Privacy Manifest را با رفتار واقعی برنامه بررسی میکند. حریم خصوصی در یک برنامه موبایل باید مستند شود.
ATT نیاز به افزودن کلید Info.plist NSUserTrackingUsageDescription با توضیح اینکه چرا ردیابی لازم است و فراخوانی ATTrackingManager.requestTrackingAuthorization() دارد. مهم: آیا باید ATT را قبل از نمایش رضایت GDPR درخواست کرد؟ خیر، ATT یک درخواست جداگانه اپل است. در اتحادیه اروپا، ابتدا بنر GDPR را نمایش دهید، سپس ATT. مجوزهای دسترسی در یک برنامه موبایل در iOS نیاز به پیکربندی اجباری ATT دارند.
IDFA برای انتساب تبلیغاتی و شخصیسازی استفاده میشود. در Android، معادل آن GAID (Google Advertising ID) یا AAID (Amazon Advertising ID) است. از Android 13+، یک مجوز runtime برای دسترسی به GAID (com.google.android.gms.permission.AD_ID) وجود دارد. حریم خصوصی برنامه موبایل نیاز به کنترل بر شناسههای تبلیغاتی دارد.
GDPR (مقررات عمومی حفاظت از داده) — مقررات اتحادیه اروپا که از مه 2018 لازمالاجرا است. الزامات: رضایت صریح برای جمعآوری دادههای شخصی، حق مدیریت مجوزهای دسترسی، حق حذف دادهها (حق فراموش شدن)، اعلان نقض دادهها و انتصاب DPO (افسر حفاظت از داده) برای شرکتهای بزرگ. این مقررات همچنین یک مدل شفاف مجوز دسترسی در برنامههای موبایل تعریف میکند.
برای برنامههای موبایل، GDPR به معنای: نمایش بنر رضایت در اولین راهاندازی (با توضیح واضح اینکه چه دادههایی برای چه اهدافی جمعآوری میشوند)، امکان رد مجوزهای غیرضروری و دکمه «حذف حساب» در تنظیمات است. ابزارهای محبوب GDPR: OneTrust، پلتفرم مدیریت رضایت (CMP) گوگل، Usercentrics. تضمین حریم خصوصی در یک برنامه موبایل نیاز به یکپارچهسازی CMP دارد.
در IT Sectr ما رضایت GDPR را در مرحله آموزش اولیه پیادهسازی میکنیم: کاربر توضیح واضحی میبیند، انتخاب میکند کدام دادهها را اجازه جمعآوری دهد و میتواند انتخاب خود را در تنظیمات تغییر دهد. این نه تنها یک الزام قانونی بلکه یک عامل اعتماد است: برنامههای شفاف نرخ نگهداشت 20% بالاتری دارند (دادههای IT Sectr، 2024). حریم خصوصی برنامه موبایل و مدیریت مجوزهای دسترسی عوامل کلیدی در نگهداشت کاربران هستند.
رضایت باید: داوطلبانه (نه یعنی نه)، خاص (نمیتوان رضایت «برای همه چیز» جمعآوری کرد)، آگاهانه (کاربر میداند به چه چیزی رضایت میدهد) و بدون ابهام (نیاز به اقدام فعال — کادر تأیید، دکمه) باشد. کادرهای تأیید از پیش انتخاب شده توسط GDPR ممنوع هستند. جریمههای نقض — تا 4% از گردش مالی جهانی یا 20 میلیون یورو. پیکربندی صحیح مجوزهای دسترسی در یک برنامه موبایل به جلوگیری از جریمهها کمک میکند.
بر اساس تجربه IT Sectr — چند توصیه عملی برای کار با مجوزها و حریم خصوصی. مجوزها را در زمینه درخواست کنید: قبل از گفتگوی سیستم، صفحهای نشان دهید که توضیح میدهد چرا مجوز لازم است. به عنوان مثال، قبل از درخواست دوربین، نشان دهید: «برای اسکن کدهای QR به دسترسی دوربین نیاز داریم» — این احتمال رضایت را 40% افزایش میدهد. مجوزهای دسترسی در برنامههای موبایل باید در زمینه استفاده درخواست شوند.
همه مجوزها را در اولین راهاندازی درخواست نکنید. درخواست مجوز زمینهای (درخواست در زمان استفاده) 60% تبدیل بالاتری نسبت به درخواست در آموزش اولیه دارد. رد را با ظرافت مدیریت کنید: اگر کاربر رد کرد، عملکرد را مسدود نکنید، بلکه یک جایگزین ارائه دهید (مثلاً ورود دستی آدرس به جای موقعیت مکانی). حریم خصوصی در برنامه موبایل از این رویکرد سود میبرد.
برای iOS حتماً Privacy Manifest را اضافه کنید (از 2025 برای همه برنامهها اجباری). برای Android بخش ایمنی داده را در Google Play Console مشخص کنید. وضعیت همه مجوزها را به صورت محلی ذخیره و با تنظیمات سیستم همگامسازی کنید. به طور منظم انطباق را بررسی کنید — قوانین به سرعت تغییر میکنند. مدل مجوز دسترسی و حریم خصوصی برنامه موبایل نیاز به حسابرسی مداوم دارد.
سؤالات متداول
ATT یک فریمورک اپل (iOS 14.5+) است که نیاز به درخواست صریح برای ردیابی کاربر دارد. بدون رضایت، IDFA صفر برمیگرداند. درخواست ATT باید شامل توضیح واضحی از هدف ردیابی باشد. نرخ پذیرش بسته به برنامه 15–25% است. مجوزهای دسترسی در یک برنامه موبایل در iOS نیاز به توضیح واضح هدف ردیابی دارند.
Normal Permissions به طور خودکار در زمان نصب اعطا میشوند — نیازی به درخواست ندارند (INTERNET، VIBRATE). Dangerous Permissions نیاز به درخواست runtime دارند (CAMERA، LOCATION، MICROPHONE) — کاربر میتواند در هر زمانی رد کند. Normal بر حریم خصوصی تأثیر نمیگذارد؛ Dangerous دسترسی به دادههای شخصی را فراهم میکند.
GDPR نیاز دارد: رضایت صریح برای جمعآوری داده، امکان حذف حساب و داده، اعلان نقض. برای برنامهها: بنر رضایت در اولین راهاندازی، توضیح واضح اهداف جمعآوری داده، دکمه «حذف حساب» در تنظیمات، از جمله مدیریت مجوزهای دسترسی. جریمه — تا 4% گردش مالی.
IDFA (شناسه برای تبلیغکنندگان) یک شناسه تبلیغاتی منحصر به فرد دستگاه در iOS است. برای هدفیابی تبلیغات و انتساب نصب استفاده میشود. از iOS 14.5، برای دسترسی به IDFA باید از طریق ATT رضایت گرفت. در Android، معادل GAID (Google Advertising ID) است. حریم خصوصی برنامه موبایل نیاز به کنترل بر شناسههای تبلیغاتی دارد.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.