Я пытаюсь запросить разрешение на определение местоположения в приложении, над которым я работаю. Он отлично работает на устройстве Android, но ничего не запрашивает на iOS. Целевая версия iOS - 11, а пакеты, которые я использую, - geolocator: ^5.3.1
и permission_handler: ^5.0.0+hotfix.5
.
Вот мой код.
Вот моя служебная функция для запроса разрешения, если статус не granted
.
Future<PermissionStatus> getDeviceLocationPermission() async {
final PermissionStatus permissionStatus =
await Permission.locationWhenInUse.status;
if (permissionStatus != PermissionStatus.granted) {
await Permission.locationWhenInUse.request();
}
return permissionStatus;
}
Вот моя служебная функция для сбора сведений о позиции.
Future<Position> getDeviceCurrentLocation(
{@required PermissionStatus permissionStatus}) async {
Position position;
Geolocator geolocator = Geolocator()..forceAndroidLocationManager;
if (permissionStatus == null) {
return null;
}
if (permissionStatus == PermissionStatus.granted) {
position = await geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high);
}
return position;
}
Вот как я получаю доступ к этим утилитам внутри виджета с отслеживанием состояния.
getDeviceLocationPermission().then((permissionStatus) {
print(permissionStatus);
getDeviceCurrentLocation(permissionStatus: permissionStatus)
.then((position) {
print(position);
});
});
Вот мои разрешения info.plist для службы определения местоположения.
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location when open and in the background.</string>
На iOS устройство, он не запрашивает диалоговое окно с просьбой разрешить или запретить доступ, а также возвращает значение null
.
Спросите, нужна ли какая-либо другая информация. Может кто-нибудь помочь мне с этим? Заранее спасибо!