所以我有一个用 swift 编写的应用程序,我想使用深层链接。用户会点击 URL 路径中包含不同信息的帖子,例如帖子的 ID 或帖子的点赞数或类似信息。我知道你把它放在 AppDelegate 中:
func application(application: UIApplication,openURL url: NSURL,sourceApplication sourceApplication: String?,annotation annotation: AnyObject?) -> Bool {
println(url.host as String!)
return true
}
这会打印
appname://
之后的所有内容。但是我怎样才能将 url.host
发送到我的视图控制器以解析为我需要的信息。如果 URL 的声明在该函数之外,那么我可以使用这个:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let InfoFromDeepLink = appDelegate.url.host
但由于它位于庞大的 Objective-C 函数内部,我很无助。你怎么做到这一点?我完全困惑了。我什至无法将函数设置为
return url.host
,因为它不允许这样做。这就是我在 Javascript 中要做的事情。如果您也了解 Javascript,也许可以用 Web 开发人员能够理解的术语来表达,因为我对此还很陌生。对于 Swift 开发人员来说这一定很简单吧?我觉得自己好蠢。
我建议使用这个名为 DeepLinkKit 的 cocoapods 包,这是源代码
pod "DeepLinkKit"
您可以简单的路由并进行错误处理:
// Matches the URL.
router[@"timeline"] = ^{ … }
// Does not match the URL.
router[@"/timeline"] = ^{ … }
这是一个很好的教程,它向您深入展示了它是如何工作的。