在swift中配置深层链接?

问题描述 投票:0回答:2

所以我有一个用 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 开发人员来说这一定很简单吧?我觉得自己好蠢。

ios swift appdelegate deep-linking
2个回答
0
投票

我建议使用这个名为 DeepLinkKit 的 cocoapods 包,这是源代码

pod "DeepLinkKit"

您可以简单的路由并进行错误处理:

// Matches the URL.
router[@"timeline"] = ^{ … }

// Does not match the URL.
router[@"/timeline"] = ^{ … }

这是一个很好的教程,它向您深入展示了它是如何工作的。


0
投票

Apple 不再支持深层链接。它现在称为通用链接,工作方式略有不同。

来源

现在 Apple 不再支持深度链接的 URI 方案,开发人员必须实现通用链接才能在 iOS 上正确进行深度链接。如果您已经在使用 URI 方案,请查看我们关于过渡到通用链接的博客。

来自:这里

这里是另一篇关于通用链接及其含义的文章。

© www.soinside.com 2019 - 2024. All rights reserved.