diff --git a/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs b/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs
index 4b8582e6..0bbe620c 100644
--- a/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs
+++ b/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs
@@ -321,9 +321,8 @@ public static string GetPbxProjectPath(BuildTarget buildTarget, string pathToBui
{
case BuildTarget.iOS:
case BuildTarget.tvOS:
- return $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj";
case BuildTarget.VisionOS:
- return $"{pathToBuiltProject}/Unity-VisionOS.xcodeproj/project.pbxproj";
+ return PBXProject.GetPBXProjectPath(pathToBuiltProject);
case BuildTarget.StandaloneOSX:
#if UNITY_2020_1_OR_NEWER
return $"{pathToBuiltProject}/{new DirectoryInfo(pathToBuiltProject).Name}.xcodeproj/project.pbxproj";
@@ -335,6 +334,15 @@ public static string GetPbxProjectPath(BuildTarget buildTarget, string pathToBui
}
}
+ ///
+ /// Utility method for getting the path of the .xcodeproj bundle Unity generated in provided build project path
+ ///
+ public static string GetGeneratedXcodeProjectPath(BuildTarget buildTarget, string pathToBuiltProject)
+ {
+ var pbxProjectPath = GetPbxProjectPath(buildTarget, pathToBuiltProject);
+ return pbxProjectPath == null ? null : Path.GetDirectoryName(pbxProjectPath);
+ }
+
///
/// Utility method for getting a PBXProject object associated with the provided BuildTarget and built project path
///
diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs
index e2f3a2fa..7f859df4 100644
--- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs
+++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs
@@ -32,7 +32,8 @@ public override void OnBeginPostProcess(AppleBuildProfile appleBuildProfile, Bui
project.WriteToFile(projectPath);
}
- var xcSettingsPath = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings";
+ var xcodeProjectPath = AppleBuild.GetGeneratedXcodeProjectPath(buildTarget, pathToBuiltProject);
+ var xcSettingsPath = $"{xcodeProjectPath}/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings";
// Change the xcode project to use the new build system.
var xcSettingsDoc = new PlistDocument();
if (File.Exists(xcSettingsPath))
diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm
index 220695cf..737b9f56 100644
--- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm
+++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm
@@ -1,5 +1,3 @@
-#import "UnityAppController.h"
-
extern "C" {
struct UnityAudioEffectDefinition;
typedef int (*UnityPluginGetAudioEffectDefinitionsFunc)(
@@ -9,6 +7,41 @@ extern void UnityRegisterAudioPlugin(
extern int UnityGetAudioEffectDefinitions(UnityAudioEffectDefinition*** definitionptr);
} // extern "C"
+#if UNITY_XCODE_PROJECT_TYPE_SWIFT
+
+#import
+#import
+
+@interface PHASESpatializerRegistration : NSObject
+@end
+
+@implementation PHASESpatializerRegistration
+
+static id sPHASERuntimeInitObserver = nil;
+
++ (void)load
+{
+ sPHASERuntimeInitObserver =
+ [[NSNotificationCenter defaultCenter] addObserverForName:UnityNotifications.unityDidInitializeRuntime
+ object:nil
+ queue:nil
+ usingBlock:^(NSNotification* note) {
+ UnityRegisterAudioPlugin(UnityGetAudioEffectDefinitions);
+
+ if (sPHASERuntimeInitObserver != nil)
+ {
+ [[NSNotificationCenter defaultCenter] removeObserver:sPHASERuntimeInitObserver];
+ sPHASERuntimeInitObserver = nil;
+ }
+ }];
+}
+
+@end
+
+#else
+
+#import "UnityAppController.h"
+
@interface PHASESpatializerAppController : UnityAppController
- (void)shouldAttachRenderDelegate;
@end
@@ -21,3 +54,5 @@ - (void)shouldAttachRenderDelegate
@end
IMPL_APP_CONTROLLER_SUBCLASS(PHASESpatializerAppController);
+
+#endif