diff --git a/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp b/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp index 66c4953306..eba17c96c3 100644 --- a/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp +++ b/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp @@ -152,6 +152,9 @@ namespace juce::build_tools if (bluetoothPermissionEnabled) addPlistDictionaryKey (*dict, "NSBluetoothAlwaysUsageDescription", bluetoothPermissionText); + if (localNetworkPermissionEnabled) + addPlistDictionaryKey (*dict, "NSLocalNetworkUsageDescription", localNetworkPermissionText); + if (iOS) { if (bluetoothPermissionEnabled) diff --git a/extras/Build/juce_build_tools/utils/juce_PlistOptions.h b/extras/Build/juce_build_tools/utils/juce_PlistOptions.h index 31f980eb72..80c9f3c584 100644 --- a/extras/Build/juce_build_tools/utils/juce_PlistOptions.h +++ b/extras/Build/juce_build_tools/utils/juce_PlistOptions.h @@ -65,6 +65,9 @@ namespace juce::build_tools bool shouldAddStoryboardToProject = false; String storyboardName; + bool localNetworkPermissionEnabled = false; + String localNetworkPermissionText; + File iconFile; String projectName; String marketingVersion; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index eae155e08c..2d19b77029 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -228,6 +228,9 @@ public: sendAppleEventsPermissionNeededValue (settings, Ids::sendAppleEventsPermissionNeeded, getUndoManager()), sendAppleEventsPermissionTextValue (settings, Ids::sendAppleEventsPermissionText, getUndoManager(), "This app requires the ability to send Apple events to function correctly."), + localNetworkPermissionNeededValue (settings, Ids::localNetworkPermissionNeeded, getUndoManager()), + localNetworkPermissionTextValue (settings, Ids::localNetworkPermissionText, getUndoManager(), + "This app requires access to the local network to function correctly."), uiFileSharingEnabledValue (settings, Ids::UIFileSharingEnabled, getUndoManager()), uiSupportsDocumentBrowserValue (settings, Ids::UISupportsDocumentBrowser, getUndoManager()), uiStatusBarHiddenValue (settings, Ids::UIStatusBarHidden, getUndoManager()), @@ -365,6 +368,9 @@ public: bool isSendAppleEventsPermissionEnabled() const { return sendAppleEventsPermissionNeededValue.get(); } String getSendAppleEventsPermissionTextString() const { return sendAppleEventsPermissionTextValue.get(); } + bool isLocalNetworkPermissionEnabled() const { return localNetworkPermissionNeededValue.get(); } + String getLocalNetworkPermissionTextString() const { return localNetworkPermissionTextValue.get(); } + bool isInAppPurchasesEnabled() const { return iosInAppPurchasesValue.get(); } bool isContentSharingEnabled() const { return iosContentSharingValue.get(); } bool isBackgroundAudioEnabled() const { return iosBackgroundAudioValue.get(); } @@ -727,6 +733,14 @@ public: "Camera Access Text", 1024, false), "A short description of why your app requires camera access."); + props.add (new ChoicePropertyComponent (localNetworkPermissionNeededValue, "Local Network Access"), + "Enable this to allow your app to use the local network. " + "The user of your app will be prompted to grant local network access permissions."); + + props.add (new TextPropertyComponentWithEnablement (localNetworkPermissionTextValue, localNetworkPermissionNeededValue, + "Local Network Access Text", 1024, false), + "A short description of why your app requires local network access."); + props.add (new ChoicePropertyComponent (bluetoothPermissionNeededValue, "Bluetooth Access"), "Enable this to allow your app to use Bluetooth on iOS 13.0 and above, and macOS 11.0 and above. " "The user of your app will be prompted to grant Bluetooth access permissions."); @@ -2049,6 +2063,8 @@ public: options.bluetoothPermissionText = owner.getBluetoothPermissionTextString(); options.sendAppleEventsPermissionEnabled = owner.isSendAppleEventsPermissionEnabled(); options.sendAppleEventsPermissionText = owner.getSendAppleEventsPermissionTextString(); + options.localNetworkPermissionEnabled = owner.isLocalNetworkPermissionEnabled(); + options.localNetworkPermissionText = owner.getLocalNetworkPermissionTextString(); options.shouldAddStoryboardToProject = owner.shouldAddStoryboardToProject(); options.iconFile = owner.iconFile; options.projectName = owner.projectName; @@ -3953,6 +3969,7 @@ private: cameraPermissionNeededValue, cameraPermissionTextValue, bluetoothPermissionNeededValue, bluetoothPermissionTextValue, sendAppleEventsPermissionNeededValue, sendAppleEventsPermissionTextValue, + localNetworkPermissionNeededValue, localNetworkPermissionTextValue, uiFileSharingEnabledValue, uiSupportsDocumentBrowserValue, uiStatusBarHiddenValue, uiRequiresFullScreenValue, documentExtensionsValue, iosInAppPurchasesValue, iosContentSharingValue, iosBackgroundAudioValue, iosBackgroundBleValue, iosPushNotificationsValue, iosAppGroupsValue, iCloudPermissionsValue, networkingMulticastValue, iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue, diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h index bc4fc0c16c..67073dce74 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h @@ -214,6 +214,8 @@ namespace Ids DECLARE_ID (cameraPermissionText); DECLARE_ID (sendAppleEventsPermissionNeeded); DECLARE_ID (sendAppleEventsPermissionText); + DECLARE_ID (localNetworkPermissionNeeded); + DECLARE_ID (localNetworkPermissionText); DECLARE_ID (androidJavaLibs); DECLARE_ID (androidAdditionalJavaFolders); DECLARE_ID (androidAdditionalResourceFolders);