Junior
Flutter колдонмолорунда кандай уруксаттар бар?
sobes.tech AI
AIден жооп
Flutter тиркемелериндеги уруксаттар түзүлөт түзмөктүн операциялык тутуму (Android же iOS) тарабынан. Flutter тиешелүү API-ларга жеткиликтүүлүк берет уруксаттарды сурап жана текшерип:
Негизги уруксаттар түрлөрү:
- Орнотуу учурунда уруксаттар (Install-time permissions): Автоматтык түрдө тиркемени орнотуу учурунда берилет. Тиркемени иштетип жатканда ачык сурап талап кылбайт. Androidде
normalжанаsignatureкатегорияларына кирет: - Иштөө учурунда уруксаттар (Runtime permissions): Мөөнөттүү жана сезимтал уруксаттар, мисалы, жайгашкан жерге, камерага, микрофонго, байланыштарга жана файлдарга жетүү. Иштеп жатканда ачык суралат. Колдонуучу уруксат бериши же четке кагышы мүмкүн. Androidде
dangerousкатегориясына кирет: - Өзгөчө уруксаттар (Special permissions): Өзгөчө колдонуучу менен өз ара аракеттенүүнү талап кылган уруксаттар, мисалы, башка терезелердин үстүнө сүрөт тартуу уруксаты (
ACTION_MANAGE_OVERLAY_PERMISSION) же системдик жөндөөлөрдү жазуу уруксаты (WRITE_SETTINGS).
Flutter API менен иштөө үчүн плагиндерди колдонуп, уруксаттарды башкаруу мүмкүн. Ең кеңири колдонулган плагин — permission_handler.
permission_handler менен иштөөдө төмөнкү статустар колдонулат:
granted: Уруксат берилген.denied: Уруксат четке кагылган (кайра сурап алууга болот).restricted: Платформа тарабынан чектелген.permanentlyDenied: Уруксат түп-тамырынан четке кагылган, колдонуучуну тиркеменин жөндөөлөрүнө жиберүү керек.limited: Уруксат бөлөк бөлөк берилген (мисалы, iOSто гана тандалган сүрөттөргө жетүү).
Мисал уруксат сурау:
import 'package:permission_handler/permission_handler.dart';
// Асынык функция уруксат сурау үчүн
Future<void> requestCameraPermission() async {
// Уруксаттын статусун алуу
var status = await Permission.camera.status;
// Эгер уруксат берилбесе
if (status.isDenied) {
// Уруксат сурау
status = await Permission.camera.request();
// Сураган соң статусын текшерүү
if (status.isGranted) {
// Уруксат берилген, камераны колдонсо болот
print('Камера уруксаты берилди');
} else if (status.isPermanentlyDenied) {
// Уруксат түп-тамырынан четке кагылган, жөндөөлөрдү ачыңыз
print('Камера уруксаты түп-тамырынан четке кагылды, жөндөөлөрдү ачыңыз');
openAppSettings(); // permission_handler'дин функциясы
} else {
// Уруксат четке кагылган, кайра сураса болот
print('Камера уруксаты четке кагылды');
}
} else if (status.isGranted) {
// Уруксат алгачкы берилген
print('Камера уруксаты алгачкы берилген');
}
}
Android жана iOS үчүн уруксаттарды манифест жана Info.plist файлдарына кошуу керек:
Android үчүн AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Камерага жетүү уруксаты -->
<uses-permission android:name="android.permission.CAMERA"/>
<application
...>
<!-- Акытыңыздар -->
</application>
</manifest>
iOS үчүн Info.plist:
<?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>
...
<!-- Камера колдонуу себебин көрсөтүү -->
<key>NSCameraUsageDescription</key>
<string>Бул тиркеме сүрөткө тартуу үчүн камераны колдонууда.</string>
...
</dict>
</plist>
Уруксаттарды сурауу тиешелүү учурда, уруксат талап кылынган функцияны колдонуу алдында жүргүзүлүшү керек, ошондо колдонуучу таасирленбейт.