Flutter ilovalarida qanday ruxsat turlari mavjud?
sobes.tech AI
AIdan javob
Flutter ilovalari uchun ruxsatlar qurilma operatsion tizimi (Android yoki iOS) tomonidan boshqariladi. Flutter mos platforma APIlariga kirish imkonini beradi va bu ruxsatlarni so'rash va tekshirish uchun foydalaniladi.
Asosiy ruxsat turlari:
- O'rnatish vaqtidagi ruxsatlar (Install-time permissions): Ular ilova o'rnatilgan paytda avtomatik ravishda beriladi. Ular ish vaqtida foydalanuvchidan aniq so'rov qilishni talab qilmaydi. Androidda ular
normalvasignaturekategoriyalariga kiradi. - Ish vaqtidagi ruxsatlar (Runtime permissions): Bu eng muhim va sezgir ruxsatlar, masalan, joylashuv, kamera, mikrofon, kontaktlar va fayllarga kirish. Ular ish vaqtida foydalanuvchidan aniq so'rov qilishni talab qiladi. Foydalanuvchi bu ruxsatni berishi yoki rad etishi mumkin. Androidda ular
dangerouskategoriyasiga kiradi. - Maxsus ruxsatlar (Special permissions): Bu ruxsatlar foydalanuvchi bilan maxsus o'zaro aloqani talab qiladi, masalan, boshqa oynalar ustida chizish (
ACTION_MANAGE_OVERLAY_PERMISSION) yoki tizim sozlamalarini o'zgartirish (WRITE_SETTINGS).
Flutter platforma API bilan muloqot qilish va ruxsatlarni boshqarish uchun plaginlardan foydalanadi. Eng keng tarqalgan plagin permission_handler.
permission_handler bilan ishlashda quyidagi ruxsat holatlari ishlatiladi:
granted: Ruxsat berilgan.denied: Ruxsat rad etilgan (yana so'rov qilish mumkin).restricted: Platforma tomonidan cheklangan.permanentlyDenied: Ruxsat yakuniy rad etilgan, foydalanuvchini ilova sozlamalariga yo'naltirish kerak.limited: Ruxsat qisman berilgan (masalan, iOSda faqat tanlangan fotosuratlarga kirish).
Kamera uchun ruxsat so'rash misoli:
import 'package:permission_handler/permission_handler.dart';
// Asinxron funktsiya ruxsat so'rash uchun
Future<void> requestCameraPermission() async {
// Ruxsat holatini olamiz
var status = await Permission.camera.status;
// Agar ruxsat hali berilmagan bo'lsa
if (status.isDenied) {
// Ruxsat so'raymiz
status = await Permission.camera.request();
// So'rovdan keyingi holatni tekshiramiz
if (status.isGranted) {
// Ruxsat berildi, kameradan foydalanish mumkin
print('Kamera ruxsati berildi');
} else if (status.isPermanentlyDenied) {
// Ruxsat yakuniy rad etildi, foydalanuvchini sozlamalarga yo'naltiring
print('Kamera ruxsati doimiy rad etildi, sozlamalarni oching');
openAppSettings(); // permission_handler dan sozlamalarni ochish funksiyasi
} else {
// Ruxsat rad etildi, yana so'rov qilish mumkin
print('Kamera ruxsati rad etildi');
}
} else if (status.isGranted) {
// Ruxsat allaqachon berilgan
print('Kamera ruxsati allaqachon berilgan');
}
}
Android uchun AndroidManifest.xml va iOS uchun Info.plist fayllariga mos ruxsatlarni qo'shish muhim.
AndroidManifest.xml misoli:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Kamera uchun ruxsat -->
<uses-permission android:name="android.permission.CAMERA"/>
<application
...>
<!-- Sizning faoliyatlar -->
</application>
</manifest>
Info.plist fayliga ruxsatdan foydalanish tavsifini qo'shish misoli:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<!-- Kamera foydalanish sababi tavsifi -->
<key>NSCameraUsageDescription</key>
<string>Ushbu ilova kamerangizni suratga olish uchun ishlatadi.</string>
...
</dict>
</plist>
Ruxsatlarni so'rash uchun ularni kerakli funksiyani ishlatishdan oldin so'rash muhim, bu foydalanuvchi tajribasini yomonlashtirmaslik uchun.