Параметр Deep Link IO ветви не появляется в реагировать родной

1

Я применил ветвь в своем собственном приложении. Все ссылки в платформе настроены, и я вижу параметр, который мне нужен в URL-адресе. Проблема, с которой я столкнулась, - это когда приложение сначала устанавливает значение null. Это только после того, как я установил, вернитесь к ссылке, которая распознает этот параметр. Это предполагаемое поведение?

Как я установил настройку своего ветки в компоненте начальной загрузки. Я добавил это в componentDidMount(), так как я использую redux и хотел бы предупредить снижение значения.

componentDidMount(){
    branch.subscribe(({params, uri, error}) => {
      if (params && !error) {

        if(params.coid != null){

          const id = params.coid
          this.showAlertMessage(
            'BUNDLE COMPANY ID',
            id
          )
          this.props.CheckAdmin(id)
          LocalStore.get('localID').then(localID => {
            LocalStore.save('localID', {value: id});
          })
        }
      }else{

        this.showAlertMessage(
          'BUNDLE COMPANY ID',
          "BUNDLE COID IS NULL"
        )
        this.props.IsMasterDownload()
      }
      this.showAlertMessage(
        'BRANCH URI',
        uri
      )
    })

  }

Должна ли функция branch.subscribe жить вне моего класса компонента для правильной работы?

Теги:
react-native
branch.io
deep-linking

1 ответ

4

Спасибо, что вызвали это. Я являюсь сторонником этого репо, и я внес некоторые изменения там, которые должны сделать вещи немного яснее.

TL; DR:

  • Обновление до версии 2.0.0-beta.5 или новее. Поведение этих аргументов несколько изменилось, чтобы быть более последовательным.
  • Не используйте аргумент uri, который устарел и в конечном итоге будет удален.
  • Ищите параметр +non_branch_link вместо не связанных каналов.
  • Используйте данные в params с params Branch.
  • Для ветвей связи uri совпадает с params['~referring_link'].
  • Обратный вызов вызывается каждый раз, когда API отвечает, включая такие вещи, как инициализация, и в этом случае params будут содержать только { "+clicked_branch_link": false, "+is_first_session": false }.
  • Подробные сведения о содержании params см. В документах ветки.
  • См. Примеры в репо, особенно webview_example.
  • componentWillMount - хорошее место для вызова branch.subscribe.

По той или иной причине у этого SDK всегда была немного другая модель данных из всех других SDK Branch. Ни один другой SDK не предоставляет параметр uri. Вся необходимая информация присутствует в params и аргументах error, которые также возвращаются другими SDK (например, iOS, Android, Cordova). Раньше RN SDK не передавал params если параметр ~id не присутствовал. Параметр ~id назначается веткой, чтобы идентифицировать каждый уникальный клик по ветке. В частности, он отсутствует для не-веток. Поэтому во многих случаях subscribe обратный вызов был вызван с нулевым params. Параметр uri был добавлен только для того, чтобы обеспечить +non_branch_link для неединичных ссылок, поскольку params были отфильтрованы. Эти различия усложнили поддержку, добавили ненужную сложность кода и вызвали путаницу среди разработчиков. Он был изменен в версии 2.0.0-beta.5. Параметр uri теперь должен считаться устаревшим. Его поведение должно быть неизменным, за исключением некоторых случаев с нечетным краем. Вам всегда нужно проконсультироваться с params если error равна нулю.

Информацию о всех параметрах Branch см. В документах ветки.

При открытии ссылки, отличной от ветки, единственным интересным параметром, который возвращается, является +non_branch_link, который является просто нераспределенным URL. Это то же самое, что и параметр uri для этих ссылок.

Обратный вызов subscribe вызывается всякий раз, когда API отвечает на SDK, который включает в себя такие вещи, как инициализация, для отложенной глубокой привязки. Когда никакая ссылка не доступна при запуске, вы все равно будете перезвоны. Но +clicked_branch_link неверно, а +non_branch_link отсутствует. Это согласуется с поведением остальных SDK Branch.

Я провел много времени на примерах в репо. Все они работают. В частности, webview_example иллюстрирует реалистичную интеграцию приложений с маршрутизацией ссылок. Я бы призвал вас взглянуть на то, как это работает. В частности, вы устанавливаете ряд параметров при вызове createBranchUniversalObject и showShareSheet (или getShortUrl). Они передаются обратно для подписки и используются для маршрутизации ссылки в приложении и отображения представления с соответствующим контентом.

На данный момент все работает и согласуется с моделью данных Branch в другом месте.

Я думаю, что еще есть возможности для улучшения. В частности, было бы неплохо иметь возможность более легко отличить ссылку от успешного ответа на инициализацию. Я думаю, что было бы лучше добавить методы в SDK и внедрить API, такой как модуль связывания RN, например branch.getInitialLink(), branch.addEventListener('open', ({params}) => {... }), branch.addEventListener('init',() => {... }), branch.addEventListener('error', ({error}) => {... }). Вероятно, это произойдет в более позднем выпуске, таком как 2.1.

  • 0
    Спасибо Джимми и извините за медленный ответ. Я попытаюсь изменить свой вызов внутри componentWillMount и избавиться от URI. Я даже не использовал это, поскольку мне просто нужны были параметры для значения ключа. Также понял, что я не добавил свои отпечатки пальцев SHA256 Cert для включения ссылок на приложения. Не приведет ли это к неправильной работе? Приветствия.
  • 0
    Еще один вопрос, Джимми, при добавлении двух параметров, каков наилучший способ разбить их на параметры? Я заметил, что если я пройду два типа? Coid = XYZ? L = ABC Params.coid = XYZ? L = ABC
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню