自定义URL方案

时间:2017-11-14 16:52:48

标签: ios swift

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

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

2 个答案:

答案 0 :(得分:0)

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

使用网址启动后,您可以在应用中执行某些操作

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
}

答案 1 :(得分:0)

从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