I'm trying to request for location permission on the app that I'm working on. It works perfectly on an Android device but not prompting anything on iOS. The target iOS version is 11 and packages that I use are geolocator: ^5.3.1
and permission_handler: ^5.0.0+hotfix.5
.
Here is my code.
Here is my utility function to request for permission if the status is not granted
.
Future<PermissionStatus> getDeviceLocationPermission() async {
final PermissionStatus permissionStatus =
await Permission.locationWhenInUse.status;
if (permissionStatus != PermissionStatus.granted) {
await Permission.locationWhenInUse.request();
}
return permissionStatus;
}
Here is my utility function to collect the position details.
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;
}
And this is how I access these utilities inside a stateful widget.
getDeviceLocationPermission().then((permissionStatus) {
print(permissionStatus);
getDeviceCurrentLocation(permissionStatus: permissionStatus)
.then((position) {
print(position);
});
});
Here are my info.plist permissions for the location service.
<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>
On an iOS device, it doesn't prompt a dialog asking to allow or deny access and also returns a null
value.
Please ask if there is any other information needed. Can someone please help me with this? Thanks in Advance!