Geolocator не будет запрашивать разрешение на iOS flutter

#flutter #flutter-dependencies

#флаттер #flutter-зависимости

Вопрос:

В моем приложении я использую geolocator: ^6.0.0-rc.3 package, но поскольку я обновился до этой версии, приложение застряло LocationPermission.deniedForever даже с тестом, которое я предоставил. разрешение. введите описание изображения здесь

Я поставил флажок запрашивать разрешение, но всплывающее окно разрешения не появляется. Можете ли вы определить, что я здесь делаю не так? Как всегда, большое спасибо.

 await geolocator.checkPermission().then((LocationPermission value) async {
      print('GeolocatorDevice.getPosition() getPosition device checkPermission : $value');
      // prints 'flutter: GeolocatorDevice.getPosition() getPosition device checkPermission : LocationPermission.deniedForever'

      if(value == null || value == LocationPermission.denied || value == LocationPermission.deniedForever ) {
        print('GeolocatorDevice.getPosition() will now request permission');
        await geolocator.requestPermission().then((value) async {
          locationPermission = value;

        }).catchError((e) => print('GeolocatorDevice.getPosition() requestPermission error: $e'));
      } else {
        locationPermission = value;

        await geolocator.getCurrentPosition(
          desiredAccuracy: LocationAccuracy.high,
        )
            .timeout(Duration(seconds: 100))
            .then((value) {
          position = value;
          print('GeolocatorDevice.getPosition() location is $value');
        }).catchError((e) => print('GeolocatorDevice.getPosition() Error fetching user position : $e'));
      }

    });
  

Комментарии:

1. У меня такая же проблема. Пожалуйста, поделитесь своим решением, если оно у вас есть.

Ответ №1:

Реализовали ли вы в AndroidManifest.xml located under path android -> app -> src -> main разрешения для доступа к Android, подобные этому?

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yourCompanyName.whateverNameHaveYourProject">
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <application
    .....
    .....
   </application>
</manifest>

  

Также Info.plist в разделе «путь ios -> Runner » вам нужно добавить следующее разрешение для стороны iOS следующим образом:

 <?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>NSLocationAlwaysUsageDescription</key>
    <string>Needed to access location always when the app is open.</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Needed to access location when the app is open and run in background.</string>
</dict>
</plist>