Flutter tətbiqlərində hansı icazə növləri mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Flutter tətbiqlərində icazələr cihazın əməliyyat sisteminə (Android və ya iOS) aiddir. Flutter müvafiq platforma API-lərinə çıxış imkanı verir ki, bu da bu icazələrin sorğulanması və yoxlanması üçün istifadə olunur.
Əsas icazə növləri:
- Quraşdırma zamanı icazələr (Install-time permissions): Tətbiq quraşdırıldıqda avtomatik verilir. Tətbiq işləyərkən istifadəçidən açıq sorğu tələb etmir. Android-də
normalvəsignaturekateqoriyalarına aiddir. - İş vaxtı icazələr (Runtime permissions): Ən vacib və həssas icazələr, məsələn, yer, kamera, mikrofon, əlaqələr və fayllara giriş. Tətbiq işləyərkən istifadəçidən açıq sorğu tələb edir. İstifadəçi bu icazəni verə və ya rədd edə bilər. Android-də
dangerouskateqoriyasına aiddir. - Xüsusi icazələr (Special permissions): İstifadəçi ilə xüsusi qarşılıqlı əlaqə tələb edən icazələr, məsələn, digər pəncərələr üzərində çəkmək üçün icazə (
ACTION_MANAGE_OVERLAY_PERMISSION) və ya sistem parametrlərini dəyişmək üçün icazə (WRITE_SETTINGS).
Flutter platforma API-ləri ilə qarşılıqlı əlaqə və icazələrin idarə olunması üçün plugin-lərdən istifadə edir. Ən çox istifadə olunan plugin permission_handler-dır.
permission_handler istifadə edilərkən aşağıdakı icazə statusları istifadə olunur:
granted: İcazə verilib.denied: İcazə rədd olunub (yenidən soruşula bilər).restricted: Platforma tərəfindən məhdudlaşdırılıb.permanentlyDenied: İcazə tamamilə rədd olunub, istifadəçi tətbiq parametrlərinə yönəldilməlidir.limited: İcazə qismən verilib (məsələn, yalnız seçilmiş şəkillərə giriş iOS-də).
Kamera girişinə icazə sorğulama nümunəsi:
import 'package:permission_handler/permission_handler.dart';
// Asinxron funksiya icazənin sorğulanması üçün
Future<void> requestCameraPermission() async {
// İcazə statusunu alırıq
var status = await Permission.camera.status;
// Əgər icazə hələ verilməyibsə
if (status.isDenied) {
// İcazəni soruşuruq
status = await Permission.camera.request();
// Sorğudan sonra statusu yoxlayırıq
if (status.isGranted) {
// İcazə verilib, kameradan istifadə edə bilərik
print('Kamera icazəsi verilib');
} else if (status.isPermanentlyDenied) {
// İcazə tamamilə rədd olunub, istifadəçini parametrlərə yönəldirik
print('Kamera icazəsi tamamilə rədd olunub, parametrləri açmaq lazımdır');
openAppSettings(); // permission_handler-dən funksiya
} else {
// İcazə rədd olunub, yenidən soruşula bilər
print('Kamera icazəsi rədd olunub');
}
} else if (status.isGranted) {
// İcazə artıq verilib
print('Kamera icazəsi artıq verilib');
}
}
Android üçün AndroidManifest.xml və iOS üçün Info.plist fayllarına müvafiq icazələri əlavə etmək vacibdir.
AndroidManifest.xml-ə icazə əlavə nümunəsi:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Kamera üçün icazə -->
<uses-permission android:name="android.permission.CAMERA"/>
<application
...>
<!-- Sizin fəaliyyətləriniz -->
</application>
</manifest>
Info.plist-ə icazə istifadə izahını əlavə nümunəsi (iOS üçün, iş vaxtı icazələri üçün tələb olunur):
<?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 istifadə səbəbinin izahı -->
<key>NSCameraUsageDescription</key>
<string>Bu tətbiq şəkil çəkmək üçün kameranızı istifadə edir.</string>
...
</dict>
</plist>
İstifadəçi təcrübəsini pozmamaq üçün icazələri müvafiq funksiyadan istifadə etdiyiniz zaman sorğulamaq vacibdir.