在前台时如何刷新本机Deeplink应用程序?

时间:2019-12-24 03:32:25

标签: android react-native react-native-android deep-linking

当我在react native上使用深层链接android时遇到问题。当应用程序处于深层状态时,从深层链接触发应用程序时,该应用程序不会在该屏幕上刷新。例如,我想深度链接到主屏幕,但是当我的前景在个人资料屏幕上时,我的应用程序不会刷新吗?

这是我的深层链接代码:

  async componentDidMount() {
    //  This for deeplinking
    if (Platform.OS === 'android') {
      Linking.getInitialURL().then(url => {
        this.navigate(url);
      });
    } else {
      Linking.addEventListener('url', this.handleOpenURL);
    }
  navigate = (url) => {
    const { navigate } = this.props.navigation;

    const route = url.replace(/.*?:\/\//g, '');
    const id = route.match(/\/([^\/]+)\/?$/)[1];
    const routeName = route.split('/')[0];
    if (id === 'yes') {
      alert(id)
    }
  }

2 个答案:

答案 0 :(得分:0)

我们可以使用react native firebase中的属性,该属性可以在前景,背景或应用程序中检测到应用程序。 documentation(如果您的应用使用了通知)。如果没有,则可以从反应导航中使用 didFocus()

答案 1 :(得分:0)

我遇到了同样的问题,这个 StackOverflow 答案为我解决了这个问题: https://stackoverflow.com/a/59351886/5901486

引用迈克尔

<块引用>

最后我想通了,Linking.addEventListener('url', callback) 返回和事件,要获取 url 应该是 event.url,我之前做的是 Linking.addEventListener('url',(url) => setLink(url)) 必须是 Linking.addEventListener('url',({ url }) => setLink(url))