自定义 URL 方案
Posted
技术标签:
【中文标题】自定义 URL 方案【英文标题】:Custom URL schemes 【发布时间】:2017-11-14 16:52:48 【问题描述】:如何处理以允许将一个应用程序定向到另一个应用程序?例如instagram://user?username=someusername
通过用户名将用户直接引导至用户个人资料。我需要创建类似的东西。
我已经检查了application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
和application(_ application: UIApplication, handleOpen url: URL) -> Bool
,但是在尝试实施时它们似乎有一条红线,所以我认为它们已被弃用。此外,当我从浏览器通过 url 打开我的应用程序时,它们似乎没有被调用。
【问题讨论】:
当方法被弃用时,警告通常会告诉您应该使用哪种方法。 @EmilioPelaez 没有出现警告 无论您在哪里看到它已被弃用,它都可能说明现在要使用什么。或者你可以谷歌搜索 UIApplication 的文档。 【参考方案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
【讨论】:
以上是关于自定义 URL 方案的主要内容,如果未能解决你的问题,请参考以下文章