From b82dd22365c24687757195c05efab036b6ac5e46 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Mon, 5 Jun 2023 14:29:43 +0100 Subject: [PATCH] Revert "iOS: Remove default Inter-App Audio entitlement from AU hosts" This reverts commit 82377a787a63c8a1d0651d13b9ecde9972fc6a8e. --- BREAKING-CHANGES.txt | 20 ------------------- .../Builds/iOS/App.entitlements | 8 ++++++++ .../AudioPluginHost.xcodeproj/project.pbxproj | 5 ++++- .../utils/juce_Entitlements.cpp | 2 +- .../utils/juce_Entitlements.h | 1 - .../ProjectSaving/jucer_ProjectExport_Xcode.h | 15 +++++--------- .../Source/Utility/Helpers/jucer_PresetIDs.h | 1 - 7 files changed, 18 insertions(+), 34 deletions(-) create mode 100644 extras/AudioPluginHost/Builds/iOS/App.entitlements diff --git a/BREAKING-CHANGES.txt b/BREAKING-CHANGES.txt index fba2968ea9..2c54649b35 100644 --- a/BREAKING-CHANGES.txt +++ b/BREAKING-CHANGES.txt @@ -4,26 +4,6 @@ JUCE breaking changes develop ======= -Change ------- -The Projucer no longer automatically adds the iOS Inter-App Audio entitlement -to AU hosts. - -Possible Issues ----------------- -iOS AU hosts that rely upon Inter-App Audio will no longer be able to receive -Inter-App Audio. - -Workaround ----------- -Use the new "[Deprecated] AU Host Inter-App Audio Capability" option in the -Projucer. - -Rationale ---------- -Inter-App Audio is deprecated in iOS 13. - - Change ------ Unique device IDs on Windows have been updated to use a more reliable SMBIOS diff --git a/extras/AudioPluginHost/Builds/iOS/App.entitlements b/extras/AudioPluginHost/Builds/iOS/App.entitlements new file mode 100644 index 0000000000..ee8c4fb8d8 --- /dev/null +++ b/extras/AudioPluginHost/Builds/iOS/App.entitlements @@ -0,0 +1,8 @@ + + + + + inter-app-audio + + + diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj index e722aeb931..54a6edc2be 100644 --- a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj @@ -103,6 +103,7 @@ 94CB96C8E4B51F52776C2638 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; }; 97918AB43AD460AFA8FA2FFE /* PluginWindow.h */ /* PluginWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginWindow.h; path = ../../Source/UI/PluginWindow.h; sourceTree = SOURCE_ROOT; }; 97E63C295843A1E665E70473 /* cello.wav */ /* cello.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = cello.wav; path = ../../../../examples/Assets/cello.wav; sourceTree = SOURCE_ROOT; }; + 9A92E8C5ECBBF926B5CF57BC /* App.entitlements */ /* App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = App.entitlements; path = App.entitlements; sourceTree = SOURCE_ROOT; }; 9F9B445E6755CAA19E4344ED /* CoreAudio.framework */ /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; A43CE79CB190C2D69E17E1E3 /* include_juce_audio_processors_ara.cpp */ /* include_juce_audio_processors_ara.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_ara.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp; sourceTree = SOURCE_ROOT; }; A5DFC13E4F09134B0D226A3E /* MainHostWindow.h */ /* MainHostWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainHostWindow.h; path = ../../Source/UI/MainHostWindow.h; sourceTree = SOURCE_ROOT; }; @@ -360,7 +361,7 @@ enabled = 0; }; com.apple.InterAppAudio = { - enabled = 0; + enabled = 1; }; com.apple.Push = { enabled = 0; @@ -444,6 +445,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "c++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_LINK_OBJC_RUNTIME = NO; + CODE_SIGN_ENTITLEMENTS = "App.entitlements"; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; DEAD_CODE_STRIPPING = YES; @@ -583,6 +585,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "c++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_LINK_OBJC_RUNTIME = NO; + CODE_SIGN_ENTITLEMENTS = "App.entitlements"; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; COPY_PHASE_STRIP = NO; diff --git a/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp b/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp index 919ee6f041..c41b4db0b2 100644 --- a/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp +++ b/extras/Build/juce_build_tools/utils/juce_Entitlements.cpp @@ -49,7 +49,7 @@ namespace build_tools if (isiOS) { - if ((isAudioPluginProject && shouldEnableIAA) || (isAUPluginHost && isAUHostIAAEnabled)) + if ((isAudioPluginProject && shouldEnableIAA) || isAUPluginHost) entitlements.set ("inter-app-audio", ""); if (isiCloudPermissionsEnabled) diff --git a/extras/Build/juce_build_tools/utils/juce_Entitlements.h b/extras/Build/juce_build_tools/utils/juce_Entitlements.h index 93abbc3a0e..1449998301 100644 --- a/extras/Build/juce_build_tools/utils/juce_Entitlements.h +++ b/extras/Build/juce_build_tools/utils/juce_Entitlements.h @@ -39,7 +39,6 @@ namespace build_tools bool isAUPluginHost = false; bool isiCloudPermissionsEnabled = false; bool isPushNotificationsEnabled = false; - bool isAUHostIAAEnabled = false; bool isAppGroupsEnabled = false; bool isHardenedRuntimeEnabled = false; bool isAppSandboxEnabled = false; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index ce89561f41..2296aa3f19 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -102,7 +102,6 @@ public: iosBackgroundAudioValue (settings, Ids::iosBackgroundAudio, getUndoManager()), iosBackgroundBleValue (settings, Ids::iosBackgroundBle, getUndoManager()), iosPushNotificationsValue (settings, Ids::iosPushNotifications, getUndoManager()), - iosAUHostIAAValue (settings, Ids::iosAUHostIAA, getUndoManager()), iosAppGroupsValue (settings, Ids::iosAppGroups, getUndoManager()), iCloudPermissionsValue (settings, Ids::iCloudPermissions, getUndoManager()), networkingMulticastValue (settings, Ids::networkingMulticast, getUndoManager()), @@ -225,7 +224,6 @@ public: bool isBackgroundAudioEnabled() const { return iosBackgroundAudioValue.get(); } bool isBackgroundBleEnabled() const { return iosBackgroundBleValue.get(); } bool isPushNotificationsEnabled() const { return iosPushNotificationsValue.get(); } - bool isAUHostIAAEnabled() const { return iosAUHostIAAValue.get(); } bool isAppGroupsEnabled() const { return iosAppGroupsValue.get(); } bool isiCloudPermissionsEnabled() const { return iCloudPermissionsValue.get(); } bool isNetworkingMulticastEnabled() const { return networkingMulticastValue.get(); } @@ -618,9 +616,6 @@ 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 (iosAUHostIAAValue, "[Deprecated] AU Host Inter-App Audio Capability"), - "If your app is an AU host then you can enable this to grant your app the capability to receive Inter-App Audio. " - "Inter-App Audio is deprecated in iOS 13."); } props.add (new ChoicePropertyComponent (networkingMulticastValue, "Networking Multicast Capability"), @@ -1341,8 +1336,9 @@ public: capabilities["ApplicationGroups.iOS"] = owner.iOS && owner.isAppGroupsEnabled(); capabilities["InAppPurchase"] = owner.isInAppPurchasesEnabled(); - capabilities["InterAppAudio"] = owner.iOS && ((type == Target::StandalonePlugIn && owner.getProject().shouldEnableIAA()) - || (owner.getProject().isAUPluginHost() && owner.isAUHostIAAEnabled())); + capabilities["InterAppAudio"] = owner.iOS && ((type == Target::StandalonePlugIn + && owner.getProject().shouldEnableIAA()) + || owner.getProject().isAUPluginHost()); capabilities["Push"] = owner.isPushNotificationsEnabled(); capabilities["Sandbox"] = type == Target::AudioUnitv3PlugIn || owner.isAppSandboxEnabled(); capabilities["HardenedRuntime"] = owner.isHardenedRuntimeEnabled(); @@ -1404,7 +1400,7 @@ public: || owner.isHardenedRuntimeEnabled() || owner.isNetworkingMulticastEnabled() || (owner.isiOS() && owner.isiCloudPermissionsEnabled()) - || (owner.isiOS() && owner.getProject().isAUPluginHost() && owner.isAUHostIAAEnabled())) + || (owner.isiOS() && owner.getProject().isAUPluginHost())) return true; if (owner.project.isAudioPluginProject() @@ -3201,7 +3197,6 @@ private: options.isAUPluginHost = project.isAUPluginHost(); options.isiCloudPermissionsEnabled = isiCloudPermissionsEnabled(); options.isPushNotificationsEnabled = isPushNotificationsEnabled(); - options.isAUHostIAAEnabled = isAUHostIAAEnabled(); options.isAppGroupsEnabled = isAppGroupsEnabled(); options.isHardenedRuntimeEnabled = isHardenedRuntimeEnabled(); options.isAppSandboxEnabled = isAppSandboxEnabled(); @@ -3697,7 +3692,7 @@ private: bluetoothPermissionNeededValue, bluetoothPermissionTextValue, sendAppleEventsPermissionNeededValue, sendAppleEventsPermissionTextValue, uiFileSharingEnabledValue, uiSupportsDocumentBrowserValue, uiStatusBarHiddenValue, uiRequiresFullScreenValue, documentExtensionsValue, iosInAppPurchasesValue, - iosContentSharingValue, iosBackgroundAudioValue, iosBackgroundBleValue, iosPushNotificationsValue, iosAUHostIAAValue, iosAppGroupsValue, iCloudPermissionsValue, + iosContentSharingValue, iosBackgroundAudioValue, iosBackgroundBleValue, iosPushNotificationsValue, iosAppGroupsValue, iCloudPermissionsValue, networkingMulticastValue, iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue, exporterBundleIdentifierValue, suppressPlistResourceUsageValue, useLegacyBuildSystemValue, buildNumber; ScopedMessageBox messageBox; diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h index b9c9e95e03..590e645624 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h @@ -270,7 +270,6 @@ namespace Ids DECLARE_ID (iosBackgroundAudio); DECLARE_ID (iosBackgroundBle); DECLARE_ID (iosPushNotifications); - DECLARE_ID (iosAUHostIAA); DECLARE_ID (iosAppGroups); DECLARE_ID (iCloudPermissions); DECLARE_ID (networkingMulticast);