【问题标题】:Configure deep links in swift?快速配置深层链接?
【发布时间】:2015-05-20 01:19:17
【问题描述】:

所以我有一个用 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


    【解决方案1】:

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

    来源

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

    发件人:HERE

    HERE 是另一篇关于通用链接及其是什么的文章。

    【讨论】:

    • Apple no longer supports Deep Links。请来源!
    • 这几天苹果公司不是这么说的
    【解决方案2】:

    我建议使用这个名为 DeepLinkKit HERE IS THE SOURCE CODE 的 cocoapods 包

    pod "DeepLinkKit"

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

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

    Here is a good tutorial 向您详细展示了它的工作原理。

    【讨论】:

    • 那么我可以在我的 Swift 项目中使用这个库吗?我看到它是用 Objective C 写的。
    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2018-05-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多