diff --git a/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp b/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp index 779c62e64f..bb4c02f1d8 100644 --- a/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp +++ b/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp @@ -110,6 +110,9 @@ namespace build_tools entitlements.set (option, ""); } + if (isNetworkingMulticastEnabled) + entitlements.set ("com.apple.developer.networking.multicast", ""); + return entitlements; } } diff --git a/extras/Build/juce_build_tools/utils/juce_Entitlements.h b/extras/Build/juce_build_tools/utils/juce_Entitlements.h index 97b2fdbbe3..b7d1538597 100644 --- a/extras/Build/juce_build_tools/utils/juce_Entitlements.h +++ b/extras/Build/juce_build_tools/utils/juce_Entitlements.h @@ -42,6 +42,7 @@ namespace build_tools bool isHardenedRuntimeEnabled = false; bool isAppSandboxEnabled = false; bool isAppSandboxInhertianceEnabled = false; + bool isNetworkingMulticastEnabled = false; String appGroupIdString; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index d0beb66b86..6ab172b1b0 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -100,6 +100,7 @@ public: iosPushNotificationsValue (settings, Ids::iosPushNotifications, getUndoManager()), iosAppGroupsValue (settings, Ids::iosAppGroups, getUndoManager()), iCloudPermissionsValue (settings, Ids::iCloudPermissions, getUndoManager()), + networkingMulticastValue (settings, Ids::networkingMulticast, getUndoManager()), iosDevelopmentTeamIDValue (settings, Ids::iosDevelopmentTeamID, getUndoManager()), iosAppGroupsIDValue (settings, Ids::iosAppGroupsId, getUndoManager()), keepCustomXcodeSchemesValue (settings, Ids::keepCustomXcodeSchemes, getUndoManager()), @@ -193,6 +194,7 @@ public: bool isPushNotificationsEnabled() const { return iosPushNotificationsValue.get(); } bool isAppGroupsEnabled() const { return iosAppGroupsValue.get(); } bool isiCloudPermissionsEnabled() const { return iCloudPermissionsValue.get(); } + bool isNetworkingMulticastEnabled() const { return networkingMulticastValue.get(); } bool isFileSharingEnabled() const { return uiFileSharingEnabledValue.get(); } bool isDocumentBrowserEnabled() const { return uiSupportsDocumentBrowserValue.get(); } bool isStatusBarHidden() const { return uiStatusBarHiddenValue.get(); } @@ -572,8 +574,13 @@ public: props.add (new ChoicePropertyComponent (iCloudPermissionsValue, "iCloud Permissions"), "Enable this to grant your app the capability to use native file load/save browser windows on iOS."); + } + props.add (new ChoicePropertyComponent (networkingMulticastValue, "Networking Multicast Capability"), + "Your app must have this entitlement to send or receive IP multicast or broadcast. " + "You will also need permission from Apple to use this entitlement."); + props.add (new ChoicePropertyComponent (iosPushNotificationsValue, "Push Notifications Capability"), "Enable this to grant your app the capability to receive push notifications."); @@ -1345,6 +1352,7 @@ public: || owner.isAppGroupsEnabled() || owner.isAppSandboxEnabled() || owner.isHardenedRuntimeEnabled() + || owner.isNetworkingMulticastEnabled() || (owner.isiOS() && owner.isiCloudPermissionsEnabled())) return true; @@ -3061,6 +3069,7 @@ private: options.isHardenedRuntimeEnabled = isHardenedRuntimeEnabled(); options.isAppSandboxEnabled = isAppSandboxEnabled(); options.isAppSandboxInhertianceEnabled = isAppSandboxInhertianceEnabled(); + options.isNetworkingMulticastEnabled = isNetworkingMulticastEnabled(); options.appGroupIdString = getAppGroupIdString(); options.hardenedRuntimeOptions = getHardenedRuntimeOptions(); options.appSandboxOptions = getAppSandboxOptions(); @@ -3552,7 +3561,7 @@ private: sendAppleEventsPermissionNeededValue, sendAppleEventsPermissionTextValue, uiFileSharingEnabledValue, uiSupportsDocumentBrowserValue, uiStatusBarHiddenValue, uiRequiresFullScreenValue, documentExtensionsValue, iosInAppPurchasesValue, iosContentSharingValue, iosBackgroundAudioValue, iosBackgroundBleValue, iosPushNotificationsValue, iosAppGroupsValue, iCloudPermissionsValue, - iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue, + networkingMulticastValue, iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue, exporterBundleIdentifierValue, suppressPlistResourceUsageValue, useLegacyBuildSystemValue, buildNumber; JUCE_DECLARE_NON_COPYABLE (XcodeProjectExporter) diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h index 1c1738d11f..018706b09c 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h @@ -260,6 +260,7 @@ namespace Ids DECLARE_ID (iosPushNotifications); DECLARE_ID (iosAppGroups); DECLARE_ID (iCloudPermissions); + DECLARE_ID (networkingMulticast); DECLARE_ID (iosDevelopmentTeamID); DECLARE_ID (iosAppGroupsId); DECLARE_ID (iosBluetoothPermissionNeeded);