我已经在我的 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;博士:
uri
参数,该参数已被弃用,最终将被删除。 +non_branch_link
参数而不是非分支链接。 params
中的数据带有分支链接。 uri
与 params['~referring_link']
相同. params
将只包含 { "+clicked_branch_link": false, "+is_first_session": false }
. params
的内容详情. 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/