分支IO深层链接参数不出现在本机中

时间:2017-06-01 20:49:46

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

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

如何在初始加载组件中设置分支调用。我将它添加到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是否需要在我的组件类之外生存才能正常运行?

1 个答案:

答案 0 :(得分:4)

感谢你提出这个问题。我是该回购的当前维护者,并且我在那里做了一些改变,应该让事情变得更加清晰。

TL; DR:

  • 更新至2.0.0-beta.5或更高版本。这些论点的行为略有改变,以便更加一致。
  • 不要使用uri参数,该参数已弃用,最终会被删除。
  • 查找+non_branch_link参数,而不是非分支链接。
  • 使用params中的数据与分支链接。
  • 对于分支链接,uriparams['~referring_link']相同。
  • 每次API响应时都会调用回调,包括初始化等,params只会包含{ "+clicked_branch_link": false, "+is_first_session": false }
  • 有关params
  • 内容的详细信息,请参阅Branch docs
  • 请参阅回购中的示例,尤其是webview_example
  • componentWillMount是致电branch.subscribe的好地方。

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

有关所有分支参数的信息,请参阅Branch docs

打开非分支链接时,返回的唯一有趣参数是+non_branch_link,它只是非分支URL。这与这些链接的uri参数相同。

只要API响应SDK,就会调用subscribe回调,其中包括初始化等延迟深度链接。如果启动时没有可用的链接,您仍然会回拨。但+clicked_branch_link为假,+non_branch_link不存在。这与Branch的其他SDK的行为一致。

我最近花了很多时间在回购邮件的examples。他们都工作。特别是,webview_example说明了与链接路由的真实应用集成。我恳请你看看它是如何运作的。特别是,当您调用createBranchUniversalObjectshowShareSheet(或getShortUrl)时,您可以设置一些参数。它们会传回subscribe并用于在应用中路由链接并显示包含相应内容的视图。

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

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