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

Android 如何在前台刷新本机Deeplink应用程序?,android,react-native,react-native-android,deep-linking,Android,React Native,React Native Android,Deep Linking,我在react native上使用深度链接android时遇到了一个问题。当应用程序处于前台状态时,当应用程序从深度链接触发时,应用程序不会在该屏幕上刷新。例如,我希望深入链接到主屏幕,但当我的前景在配置文件屏幕上时,我的应用程序不刷新 这是我的深度链接代码: async componentDidMount() { // This for deeplinking if (Platform.OS === 'android') { Linking.getInitia

我在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);
    }

我们可以使用react native firebase的属性,它可以在前台、后台或应用程序中检测应用程序。如果您在应用程序中使用了通知。如果您没有,您可以使用react navigation中的didFocus()

android
的情况下,为什么不监听url更改?如何监听?在前台,屏幕未刷新。在android中,它无法注册此侦听器
Linking.addEventListener('url',this.handleOpenURL)。你有上面的
if
条件。是的,这是iOS和Android的条件。但我认为这不是问题。或者更快。你能给我链接吗?或者你有没有遇到过与react native相同的情况?
  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)
    }
  }