getInitialLink 不起作用,但 onLink 在 react-native-firebase v6 中工作

Posted

技术标签:

【中文标题】getInitialLink 不起作用,但 onLink 在 react-native-firebase v6 中工作【英文标题】:getInitialLink is not working but onLink is working in react-native-firebase v6 【发布时间】:2020-02-14 18:16:27 【问题描述】:

我在 App.js 中使用以下代码 - componentDidMount

    firebase
      .dynamicLinks()
      .getInitialLink()
      .then(link => 
        if (link) 
          if (link.url.includes('/s/')) 
            this.handleSignupURL(link.url)
          
        
      )


    firebase.dynamicLinks().onLink(( url ) => 
      if (url && url.includes('/s/')) 
        this.handleSignupURL(url)
      
    )
  

点击动态链接时:当应用程序处于活动状态时,会触发 onLink 处理程序并且应用程序会正确处理它。但是当应用程序关闭时,getInitialLink 返回 null。获取初始链接的任何解决方案?

我正在使用 react-native-firebase v6,react-native 对应 expo 36。安装按照新的 react-native-firebase quick start 执行。我正在使用 ios 应用程序。

【问题讨论】:

【参考方案1】:

我现在在 iOS 上也遇到了这个问题。我不确定这是否是一个很好的解决方法,因为我还没有投入生产,但是当应用程序不在后台时,我可以在 iOS 上工作的一种方法是使用来自 RN 的 Linking 包,就像在我的启动画面中一样:

        Linking.getInitialURL().then((url) => 
            if (url)
                Linking.openURL(url).then((response) => 
                    Actions.reset('MainFeed');
                );

             else 
                console.log('no url');
                Actions.reset('MainFeed');
            
        );

然后在 MainFeed 屏幕上的 componentDidMount 上,我为 onLink 设置了一个侦听器。由于我们现在在应用程序打开时调用 openURL,因此来自 firebase 的 onLink 触发,我能够解析深层链接并将用户路由到他们需要去的地方。

我还没有测试过这种方法是否允许链接到持久的应用商店安装

编辑:我已经对此进行了测试,并且它一直有效。该链接通过应用商店/谷歌播放下载仍然存在

【讨论】:

以上是关于getInitialLink 不起作用,但 onLink 在 react-native-firebase v6 中工作的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 动态链接 - 从 Play 商店安装应用程序后无法在 android 中获取 Url

Angular 的 $http.post 不起作用,它的 $http... 也不起作用,但 jQuerys ajax 起作用。为啥?

Laravel Admin 路由不起作用,但其他路由不起作用

同步方法不起作用,但同步块起作用,为啥?

DirectSoundOut 不起作用,但 WaveOut 起作用

Javascript:为啥有时 alert() 不起作用但 console.log() 起作用?