javascript - 分支 IO 深层链接参数未出现在 native react 中

标签 javascript android react-native deep-linking branch.io

我已经在我的 react 原生应用程序中实现了分支。平台中的所有链接都已设置,我在 URL 中看到了我需要的参数。我遇到的问题是当应用程序首次安装时该值为空。只有在我安装后才返回它识别此参数的链接。这是预期的行为吗?

我如何在初始加载组件中设置分支调用。我将它添加到 componentDidMount() 因为我正在使用 redux 并希望提醒 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 是否需要在我的组件类之外才能正常运行?

最佳答案

感谢您提出这个问题。我是那个 repo 的当前维护者,我一直在那里做了一些改变,这应该会让事情变得更清楚一些。

TL;博士:

  • 更新到 2.0.0-beta.5 或更高版本。这些论点的行为略有改变,以更加一致。
  • 不要使用 uri参数,该参数已被弃用,最终将被删除。
  • 寻找 +non_branch_link参数而不是非分支链接。
  • 使用 params 中的数据带有分支链接。
  • 对于分支链接,uriparams['~referring_link'] 相同.
  • 任何时候 API 响应时都会调用回调,包括初始化之类的事情,在这种情况下是 params将只包含 { "+clicked_branch_link": false, "+is_first_session": false } .
  • Branch docs params的内容详情.
  • 请参阅 repo 中的示例,尤其是 webview_example .
  • componentWillMount是个打电话的好地方branch.subscribe .

  • 由于某种原因,此 SDK 的数据模型与 Branch 的所有其他 SDK 的数据模型总是略有不同。没有其他 SDK 提供 uri范围。所有相关信息都在 params 中。和 error其他 SDK(例如 iOS、Android、Cordova)也返回的参数。以前 RN SDK 不会通过 params如果 ~id参数不存在。 ~id参数由 Branch 分配,以标识 Branch 链接上的每个唯一点击。特别是,它不存在于非分支链接。所以在很多情况下 subscribe使用 null params 调用回调. uri添加参数只是为了提供 +non_branch_link对于非分支链接,因为 params被过滤掉了。这些差异使支持变得更加困难,增加了不必要的代码复杂性,并在开发人员中造成了困惑。 It has been changed在 2.0.0-beta.5 中。 uri现在应将参数视为已弃用。除了一些奇怪的边缘情况外,它的行为应该保持不变。您总是需要咨询 params除非error是非空的。

    Branch docs有关所有分支参数的信息。

    打开非分支链接时,返回的唯一有趣参数是 +non_branch_link ,这只是非分支 URL。这与 uri 相同。这些链接的参数。
    subscribe每当 API 响应 SDK 时都会调用回调,其中包括初始化等内容,用于延迟深度链接。当启动时没有可用的链接时,您仍会被回叫。但是+clicked_branch_link是假的,+non_branch_link缺席。这与 Branch 其他 SDK 的行为一致。

    我最近在 examples 上花了很多时间。在 repo 中。他们都工作。特别是 webview_example说明了与链接路由的实际应用程序集成。我敦促你看看它是如何工作的。特别是在调用 createBranchUniversalObject 时设置了许多参数。和 showShareSheet (或 getShortUrl)。它们被传回 subscribe并用于在应用程序中路由链接并显示具有适当内容的 View 。

    目前,一切正常,并且与 Branch 在其他地方的数据模型一致。

    我认为还有改进的余地。特别是,如果能够更容易地区分打开的链接和成功的初始化响应,那就太好了。我认为向 SDK 添加方法并采用像 RN Linking 模块这样的 API 将是一种改进,例如branch.getInitialLink() , branch.addEventListener('open', ({params}) => { ... }) , branch.addEventListener('init', () => { ... }) , branch.addEventListener('error', ({error}) => { ... }) .这可能会在 2.1 等以后的版本中发生。

    关于javascript - 分支 IO 深层链接参数未出现在 native react 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316877/

    相关文章:

    javascript - JQuery 检索文本而不是选择列表的值

    javascript - 世博会文字转语音语音信息

    ios - 为什么我的 React Native 桥接 iOS 组件不起作用?

    android - BroadcastReceiver 重启后丢失数据

    Android:如何更改 onItemSelected 事件的微调器背景

    android - 如何使 TextView 完全像这样

    firebase - Expo 和 firebase 云功能

    javascript - 在 CRM 2011 中使用 OData 检索多个

    javascript - 使用 Javascript InsertAfter 长 HTML block

    javascript - 听取模型变化的惯用方式