Millised load tüübid on Flutter rakendustes olemas?
sobes.tech AI
Vastus AI-lt
Flutter rakenduste õigused hallatakse seadme operatsioonisüsteemi (Android või iOS) kaudu. Flutter võimaldab juurdepääsu vastavatele API-dele nende õiguste taotlemiseks ja kontrollimiseks:
Peamised õigusetüübid:
- Installimise ajal õigused (Install-time permissions): Automaatselt antakse rakenduse installimise ajal. Ei nõua kasutajalt otsest taotlust rakenduse töö ajal. Androidis kuuluvad need
normaljasignaturekategooriatesse. - Töö ajal õigused (Runtime permissions): Olulisemad ja tundlikumad õigused, nagu juurdepääs asukohale, kaamerale, mikrofonile, kontaktidele ja failidele. Nende taotlemiseks on vaja kasutaja otsest nõusolekut töö ajal. Kasutaja võib sellise nõusoleku anda või keelduda. Androidis kuuluvad need
dangerouskategooriasse. - Spetsiaalsed õigused (Special permissions): Õigused, mis nõuavad kasutajaga erilist koostööd, näiteks lubada joonistada teiste akende peal (
ACTION_MANAGE_OVERLAY_PERMISSION) või kirjutada süsteeseadeid (WRITE_SETTINGS).
Flutter kasutab pistikprogramme API-dega suhtlemiseks ja õiguste haldamiseks. Kõige levinum pistikprogramm on permission_handler.
permission_handler-iga töötades kasutatakse järgmisi oleku staatuseid:
granted: Õigus on antud.denied: Õigus on keeldutud (võib uuesti taotleda).restricted: Õigus on platvormi poolt piiratud.permanentlyDenied: Õigus on lõplikult keeldutud, kasutaja tuleb suunata rakenduse seadistustesse.limited: Õigus on osaliselt antud (näiteks juurdepääs ainult valitud fotodele iOS-is).
Näide õiguse taotlemisest:
import 'package:permission_handler/permission_handler.dart';
// Asünkroonne funktsioon õiguse taotlemiseks
Future<void> requestCameraPermission() async {
// Õiguse staatuse saamine
var status = await Permission.camera.status;
// Kui õigus pole veel antud
if (status.isDenied) {
// Õiguse taotlemine
status = await Permission.camera.request();
// Pärast taotlust staatuse kontroll
if (status.isGranted) {
// Õigus on antud, saab kasutada kaamerat
print('Kaamera õigus on antud');
} else if (status.isPermanentlyDenied) {
// Õigus on lõplikult keeldutud, avada seaded
print('Kaamera õigus on lõplikult keeldutud, avage seaded');
openAppSettings(); // permission_handler funktsioon
} else {
// Õigus on keeldutud, kuid seda saab uuesti taotleda
print('Kaamera õigus on keeldutud');
}
} else if (status.isGranted) {
// Õigus on juba antud
print('Kaamera õigus on juba antud');
}
}
Vajalik on lisada vastavad õigused Androidi manifesti faili (android/app/src/main/AndroidManifest.xml) ja Info.plist faili (ios/Runner/Info.plist):
Android AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Kaamera juurdepääsu õigus -->
<uses-permission android:name="android.permission.CAMERA"/>
<application
...>
<!-- Teie tegevused -->
</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>
...
<!-- Kirjeldus, miks kasutatakse kaamerat -->
<key>NSCameraUsageDescription</key>
<string>See rakendus kasutab teie kaamerat fotode tegemiseks.</string>
...
</dict>
</plist>
Oluline on taotleda õigusi sobival ajal, kui funktsioon, mis nõuab õigust, kasutatakse, et vältida kasutaja kogemuse halvenemist.