0

我有一个基于 SwiftUI 的 Mac 应用程序,其中包含多个WindowGroups.

WindowGroups1.使用 URL 方案打开不同的 SwiftUI

要打开这些窗口,我正在使用 URL 方案(如此处所述):

WindowGroup {
    // ...
}
.handlesExternalEvents(matching: Set(arrayLiteral: "primaryWindow"))

...然后调用:

NSWorkspace.shared.open(URL(string: "myapp://primaryWindow")!)

☑️ 这很好用!

2. 检测从应用程序外部调用的 URL

我还需要能够识别和处理从应用程序外部调用的 URL 方案,例如myapp://somePath?someParameter=1. 我找到了这个解决方案并在我的AppDelegate

func applicationWillFinishLaunching(_ notification: Notification) {
    NSAppleEventManager.shared().setEventHandler(self, andSelector: #selector(self.handleGetURL(event:reply:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL)) )
}

☑️ 这也很好用,而且我的#selector方法也像你期望的那样被调用。

3.问题:如何同时使用.handlesExternalEvents.setEventHandler

这是问题开始的地方:在调用.setEventHandlerWindowGroups不再对调用的 URL 做出反应后,我仍然无法打开新窗口。

这在某种程度上是有道理的,因为我已经在 AppDelegate 中专门注册了一个事件处理程序,kAEGetURL但我不知道如何同时实现这两个功能。期待您的建议!

4

0 回答 0