diff --git a/examples/corelib/permissions/Info.plist b/examples/corelib/permissions/Info.plist
index dce43caf125..57625d03dc9 100644
--- a/examples/corelib/permissions/Info.plist
+++ b/examples/corelib/permissions/Info.plist
@@ -46,12 +46,12 @@
Testing HealthShare
NSHealthUpdateUsageDescription
Testing HealthUpdate
- NSLocationAlwaysAndWhenInUseUsageDescription
- Testing LocationAlwaysAndWhenInUse
- NSLocationAlwaysUsageDescription
- Testing LocationAlways
+ NSLocationUsageDescription
+ Testing Location on macOS
NSLocationWhenInUseUsageDescription
- Testing LocationWhenInUse
+ Testing Location when in use on iOS
+ NSLocationAlwaysAndWhenInUseUsageDescription
+ Testing Location always and when in use on iOS
NSMicrophoneUsageDescription
Testing Microphone
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index 4669b6fde96..d9519bd0032 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -1240,11 +1240,18 @@ if(QT_FEATURE_permissions AND APPLE)
qt_internal_extend_target(QDarwinLocationPermissionPlugin
LIBRARIES ${FWCoreLocation}
)
- set_property(TARGET QDarwinLocationPermissionPlugin PROPERTY
- _qt_info_plist_usage_descriptions
- "NSLocationWhenInUseUsageDescription"
- "NSLocationAlwaysUsageDescription"
- )
+ if(MACOS)
+ set_property(TARGET QDarwinLocationPermissionPlugin PROPERTY
+ _qt_info_plist_usage_descriptions
+ "NSLocationUsageDescription"
+ )
+ else()
+ set_property(TARGET QDarwinLocationPermissionPlugin PROPERTY
+ _qt_info_plist_usage_descriptions
+ "NSLocationWhenInUseUsageDescription"
+ "NSLocationAlwaysAndWhenInUseUsageDescription"
+ )
+ endif()
endif()
qt_internal_extend_target(Core CONDITION QT_FEATURE_permissions AND ANDROID
diff --git a/src/corelib/kernel/qpermissions.cpp b/src/corelib/kernel/qpermissions.cpp
index 129669dbb83..4667896f4ed 100644
--- a/src/corelib/kernel/qpermissions.cpp
+++ b/src/corelib/kernel/qpermissions.cpp
@@ -381,10 +381,14 @@ QT_PERMISSION_IMPL_COMMON(QBluetoothPermission)
\include permissions.qdocinc begin-usage-declarations
\row
- \li Apple
+ \li \macos
+ \li \l{apple-usage-description}{Usage description}
+ \li \c NSLocationUsageDescription
+ \row
+ \li iOS
\li \l{apple-usage-description}{Usage description}
\li \c NSLocationWhenInUseUsageDescription, and
- \c NSLocationAlwaysUsageDescription if requesting
+ \c NSLocationAlwaysAndWhenInUseUsageDescription if requesting
QLocationPermission::Always
\row
\li Android
diff --git a/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm b/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm
index 45c3a8816e2..ed6acd3c9f6 100644
--- a/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm
+++ b/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm
@@ -123,11 +123,15 @@ struct PermissionRequest
- (QStringList)usageDescriptionsFor:(QPermission)permission
{
+#if defined(Q_OS_MACOS)
+ return { "NSLocationUsageDescription" };
+#else // iOS 11 and above
QStringList usageDescriptions = { "NSLocationWhenInUseUsageDescription" };
const auto locationPermission = *permission.value();
if (locationPermission.availability() == QLocationPermission::Always)
- usageDescriptions << "NSLocationAlwaysUsageDescription";
+ usageDescriptions << "NSLocationAlwaysAndWhenInUseUsageDescription";
return usageDescriptions;
+#endif
}
- (void)requestPermission:(QPermission)permission withCallback:(PermissionCallback)callback