首页 > 解决方案 > 如何从 URL 中获取查询参数?

问题描述

我正在创建手动 Firebase 动态链接

我有一个格式为https://test.page.link/?link=https://test.page.link/register?accessCode%3DAA000000&apn=com.test.foo&ibi=com.test.bar&ofl=https的网址://www.google.com

如何获得 accessCode 的值?

extension URL {
    
    func valueOf(_ queryParameterName: String) -> String? {
        guard let url = URLComponents(string: self.absoluteString) else { return nil }

        return url.queryItems?.first(where: { $0.name == queryParameterName })?.value
    }
}

使用此扩展,查询项是linkapnofl

url.valueOf("link")返回:

https://test.page.link/?link=https://test.page.link/register?accessCode=AA000000

我只需要AA000000退货。

标签: iosswifturlfirebase-dynamic-links

解决方案


由于link是 url 的格式,URL因此从它创建一个实例,然后使用如下方法获取accessCode值,valueOf(_:)

if let link = url.valueOf("link"), let linkUrl = URL(string: link) {
    let accessCode = linkUrl.valueOf("accessCode")
    print(accessCode)
}

推荐阅读