【问题标题】:Custom URL schemes自定义 URL 方案
【发布时间】:2017-11-14 16:52:48
【问题描述】:

如何处理自定义 URL 方案以允许将一个应用程序定向到另一个应用程序?例如instagram://user?username=someusername 通过用户名将用户直接引导至用户个人资料。我需要创建类似的东西。

我已经检查了application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Boolapplication(_ application: UIApplication, handleOpen url: URL) -> Bool,但是在尝试实施时它们似乎有一条红线,所以我认为它们已被弃用。此外,当我从浏览器通过 url 打开我的应用程序时,它们似乎没有被调用。

【问题讨论】:

  • 当方法被弃用时,警告通常会告诉您应该使用哪种方法。
  • @EmilioPelaez 没有出现警告
  • 无论您在哪里看到它已被弃用,它都可能说明现在要使用什么。或者你可以谷歌搜索 UIApplication 的文档。

标签: ios swift


【解决方案1】:

以这个网址为例:appName://?id=12345

你可以在你的应用程序中使用这样的 url 启动后做一些事情

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false)
    if let items = urlComponents?.queryItems as [NSURLQueryItem]?,
        (url.scheme == "appName") {
        if items.first?.name == "id",
            let id = items.first?.value {
            print(id) // prints 12345 to console
            // do something with the id, possibly present/push a controller for the user
        }
    }
    return false
}

【讨论】:

    【解决方案2】:

    iOS 13 及以上版本以下功能将不再起作用。

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
    

    从 iOS 13 及更高版本更新的功能

     func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>)
    

    SceneDelegate 类中使用此函数。
    信用:https://www.swiftdevcenter.com/custom-url-scheme-deep-link-ios-13-and-later-swift-5/
    更多详情请关注this tutorial

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 2012-06-15
      • 2011-04-30
      • 2014-10-22
      • 2011-12-14
      • 2016-05-04
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多