无法识别与macOS应用程序的深层链接

时间:2017-03-31 16:56:36

标签: swift macos hyperlink deep-linking

我试图在macOS应用程序中实现深层链接,但似乎没有任何效果。

到目前为止,我的AppDelegate.swift包含以下内容

func application(app: NSApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    print("opened by link");
    return true
}

我还使用URLSchemes配置了info.plist,我的包标识符和URLIdentifier只是zst

在一个简单的html文件中,我使用以下代码来测试深层链接

<a href="zst://test/link">Test</a>

我的应用程序被打开(或在已经运行时变为活动状态),但不执行print语句。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

感谢@Ssswift,我找到了一个解决方案。 使用此代码: How do you set your Cocoa application as the default web browser?

并使用:https://objectivec2swift.com

将其转换为swift

适用于Swift 3

AppDelegate.swift中的

添加了这些行

func applicationDidFinishLaunching(_ aNotification: Notification) {
    var em = NSAppleEventManager.shared()
    em.setEventHandler(self, andSelector: #selector(self.getUrl(_:withReplyEvent:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL))
}

func getUrl(_ event: NSAppleEventDescriptor, withReplyEvent replyEvent: NSAppleEventDescriptor) {
    // Get the URL
    var urlStr: String = event.paramDescriptor(forKeyword: keyDirectObject)!.stringValue!
    print(urlStr);

}