0

I am adopting my iOS widget to my Mac app, and one thing I can't figure out is when I do a deep-link from the widget to the Mac app, where would that get detected? On iOS, it calls:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 

But I can't find any equivalent method in the NSApplicationDelegate. The closest method is

- (void)application: (NSApplication *)application openURLs:(nonnull NSArray<NSURL *> *)urls

But this doesn't get invoked from the widget's Link.

Is there some other way to handle this on macOS? Do I need to configure something in particular for the openURLs method to be called?

EDIT:

After more testing, I've realized that the application: openURLs method should be called, whether through the widget Link or directly called using the URL scheme (as defined in the Info.plist). I verified this with another test app as well, where I can use [[NSWorkspace sharedWorkspace] openURL: testURL] to open the test app and the application: openURLs DOES get called. But it's not working for my main app for some reason, even though I've followed the same steps and defined the URL scheme in CFBundleURLTypes in the Info.plist file. The main app was created many years ago, whereas the test app was created just today.

Any ideas why the openURLs method isn't getting called in my main app?

Z S
  • 7,039
  • 12
  • 53
  • 105
  • You have both SwiftUI and AppKit tagged. Which lifecycle are you using? – jnpdx Nov 09 '21 at 19:55
  • 1
    The widget is build using SwiftUI, but it links out to the AppKit app (like it would do with UIKit on iOS). – Z S Nov 09 '21 at 19:58

0 Answers0