Создать URL с / # / в пути и открыть в сафари - PullRequest
0 голосов
/ 17 сентября 2018

Я использую динамические ссылки Firebase, которые содержат URL-адрес нашего веб-приложения.Если динамическая ссылка открыта, глубокая ссылка выбирается.Все идет нормально.Поскольку мы используем шаблон / # / path в нашем веб-приложении для перенаправления пользователя в разные разделы, у нас возникла проблема: создание такого URL-адреса в нашем приложении iOS после добавления нового параметра в URL-адресе

Если этот пример URL-адреса находится в нашей динамической ссылке

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

, я получаю его и должен добавить параметр для механизма автологина в нашем веб-приложении.

Так вот в этом месте я терплю неудачу вдва разных подхода.

  1. Получение строки из URL и добавление параметра и значения токена.Этот подход работает нормально, пока мне не придется анализировать urlString обратно в объект URL./ # / Inside вызывает ошибку при создании нового объекта URL.Я пытаюсь заменить / # / на /% 23 / (кодированный #), но это не работает в нашей инфраструктуре ngnix / webapp.

  2. Добавление параметра токена с новым 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
  }
}

делаетУ кого-нибудь есть идеи, как я мог решить эту проблему?Я лично предпочитаю второй подход, если есть возможность добавить параметры в конце

1 Ответ

0 голосов
/ 21 сентября 2018

Я понял, как это сделать с параметрами firebase и utm (эту ссылку можно добавить как глубокую ссылку в динамическую ссылку для firebase)

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

Таким образом применяются все параметры utmи путь будет доступен и в веб-приложении.

Вы можете добавлять новые параметры запроса с помощью iOS SDK, но имейте в виду, что они добавляются в расположение параметров utm.

Если вам нужночтобы добавить их в конце, проверьте, существует ли уже?в пути и напишите свое собственное добавление в конце URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...