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