В моем приложении для управления офисом мы отмечаем посещаемость, нажимая на селфи, а также фиксируем текущую широту и долготу. Для Android это действие работает нормально, но в моем iOS никогда не появляется диалоговое окно разрешения, вместо этого появляется диалоговое окно, которое я создал для перенаправления пользователя на панель настроек. Ниже приведены разрешения, которые я использую в файле info.plist:
NSCameraUsageDescription
Camera access is needed to capture your photo for attendance submission.
NSLocationWhenInUseUsageDescription
This app uses your location to get current latitude and longitude to mark attendance accurately when the app is open.
camera: ^0.11.0+2 # For live camera capture (Android & iOS)
geolocator: ^10.1.0 # for location
permission_handler: ^11.3.0 # for runtime permission requests
Пожалуйста, предложите мне улучшения, чтобы я мог исправить это действие для iOS, поскольку на моем Android оно работает нормально.
В моем приложении для управления офисом мы отмечаем посещаемость, нажимая на селфи, а также фиксируем текущую широту и долготу. Для Android это действие работает нормально, но в моем iOS никогда не появляется диалоговое окно разрешения, вместо этого появляется диалоговое окно, которое я создал для перенаправления пользователя на панель настроек. Ниже приведены разрешения, которые я использую в файле info.plist: [code]NSCameraUsageDescription Camera access is needed to capture your photo for attendance submission.
NSLocationWhenInUseUsageDescription This app uses your location to get current latitude and longitude to mark attendance accurately when the app is open. [/code] Вот мой код активности для справки: [code]void initState() { super.initState(); // Important for iOS: wait for first frame before asking permissions WidgetsBinding.instance.addPostFrameCallback((_) async { await _checkGpsAndPermissions(); }); }
Future _initializeCamera() async { try { final cameras = await availableCameras(); if (cameras.isEmpty) { debugPrint("No cameras found."); ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text("No camera available on this device.")), ); return; }
Future _checkGpsAndPermissions() async { final serviceEnabled = await Geolocator.isLocationServiceEnabled(); if (!serviceEnabled) { _showGpsDialog(); return; } await _checkAllPermissions(); }
Future _checkAllPermissions() async { try { // Camera var cameraStatus = await Permission.camera.status; if (!cameraStatus.isGranted) cameraStatus = await Permission.camera.request(); if (!cameraStatus.isGranted) { _showPermissionDialog("Camera access is required to take your attendance photo."); return; }
if (locationPermission != LocationPermission.whileInUse && locationPermission != LocationPermission.always) { _showPermissionDialog("Location access is required to record your attendance location."); return; }
await _getLocation(); await _initializeCamera(); } catch (e) { debugPrint("Permission error: $e"); _showPermissionDialog("Permissions are needed to continue."); } }
[/code] Наконец, это зависимости, которые я использую в файле pubspec для обработки разрешений, геолокации, камеры: [code] camera: ^0.11.0+2 # For live camera capture (Android & iOS) geolocator: ^10.1.0 # for location permission_handler: ^11.3.0 # for runtime permission requests [/code] Пожалуйста, предложите мне улучшения, чтобы я мог исправить это действие для iOS, поскольку на моем Android оно работает нормально.