我使用Firebase动态链接,其中包含指向我们的Web应用程序的URL。 如果打开动态链接,则获取深层链接。 到目前为止,一切都很好。当我们在Web应用程序中使用/#/ path模式将用户重定向到不同的部分时,我们现在遇到了问题,必须在url中添加新参数后,在iOS应用程序中创建此类url
如果此示例网址位于我们的动态链接中
https://domain/#/main/page?utm_source=app&utm_medium=button&utm_campaign=testcampaign
我明白了,必须在我们的webapp中为自动登录机制附加一个参数。
这就是我在两种不同方法上失败的地方。
从url获取字符串,并附加令牌参数和值。 在我必须将urlString解析回URL对象之前,这种方法可以正常工作。创建新的URL对象时,/#/内部会导致错误。 我尝试将/#/替换为/%23 /(编码为#),但这在我们的ngnix / webapp基础结构上不起作用。
在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
}
}
有人知道我该如何解决这个问题?如果可以在最后添加参数,我个人更喜欢第二种方法
答案 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的末尾写下自己的附加内容。