Я использую динамические ссылки Firebase, которые содержат URL-адрес нашего веб-приложения.Если динамическая ссылка открыта, глубокая ссылка выбирается.Все идет нормально.Поскольку мы используем шаблон / # / path в нашем веб-приложении для перенаправления пользователя в разные разделы, у нас возникла проблема: создание такого URL-адреса в нашем приложении iOS после добавления нового параметра в URL-адресе
Если этот пример URL-адреса находится в нашей динамической ссылке
https://domain/#/main/page?utm_source=app&utm_medium=button&utm_campaign=testcampaign
, я получаю его и должен добавить параметр для механизма автологина в нашем веб-приложении.
Так вот в этом месте я терплю неудачу вдва разных подхода.
Получение строки из URL и добавление параметра и значения токена.Этот подход работает нормально, пока мне не придется анализировать urlString обратно в объект URL./ # / Inside вызывает ошибку при создании нового объекта URL.Я пытаюсь заменить / # / на /% 23 / (кодированный #), но это не работает в нашей инфраструктуре ngnix / webapp.
Добавление параметра токена с новым URLQueryItem в URLComponents,Этот подход приводит к неверному URL, в результате (токен является добавленным параметром)
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
}
}
делаетУ кого-нибудь есть идеи, как я мог решить эту проблему?Я лично предпочитаю второй подход, если есть возможность добавить параметры в конце