在路径中使用/#/创建URL并在Safari中打开

时间:2018-09-17 10:43:16

标签: ios swift url firebase-dynamic-links

我使用Firebase动态链接,其中包含指向我们的Web应用程序的URL。 如果打开动态链接,则获取深层链接。 到目前为止,一切都很好。当我们在Web应用程序中使用/#/ path模式将用户重定向到不同的部分时,我们现在遇到了问题,必须在url中添加新参数后,在iOS应用程序中创建此类url

如果此示例网址位于我们的动态链接中

https://domain/#/main/page?utm_source=app&utm_medium=button&utm_campaign=testcampaign

我明白了,必须在我们的webapp中为自动登录机制附加一个参数。

这就是我在两种不同方法上失败的地方。

  1. 从url获取字符串,并附加令牌参数和值。 在我必须将urlString解析回URL对象之前,这种方法可以正常工作。创建新的URL对象时,/#/内部会导致错误。 我尝试将/#/替换为/%23 /(编码为#),但这在我们的ngnix / webapp基础结构上不起作用。

  2. 在URLComponents中为token参数附加新的URLQueryItem。 这种方法导致网址错误,导致(令牌是添加的参数)

    https://my-stage.bikersos.com/?token=tokrenvalue#/main/premium?utm_source=app&utm_medium=button&utm_campaign=testcampaign
    

我在URL查询项中附加了此扩展名

extension URL {
  func addQueryParams(newParams: [URLQueryItem]) -> URL? {
    let urlComponents = NSURLComponents.init(url: self, resolvingAgainstBaseURL: false)
    guard urlComponents != nil else { return nil; }
    if (urlComponents?.queryItems == nil) {
        urlComponents!.queryItems = []
    }
    urlComponents!.queryItems!.append(contentsOf: newParams)
    print(urlComponents!)
    return urlComponents?.url
  }
}

有人知道我该如何解决这个问题?如果可以在最后添加参数,我个人更喜欢第二种方法

1 个答案:

答案 0 :(得分:0)

我弄清楚了如何使用firebase和utm参数来完成此操作(可以将该链接作为深链接添加到firebase的动态链接中)

https://example.domain.com/?utm_source=newsletter&utm_medium=button&utm_campaign=testcampaign#/path1/subpath?webappparam1=1&webappparam2=asdf

这样,将应用所有utm参数,并且路径也将在Web应用程序中可用。

您可以使用iOS SDK添加新的查询参数,但是请注意,它们是在utm参数位置添加的。

如果需要在末尾添加它们,请检查是否已经存在一个?在路径中,并在url的末尾写下自己的附加内容。