React-Native Linking AddEventListener не работает

Привет, я пытался использовать React-Native Linking library для прослушивания ссылок на изменения, и я выполнил инструкции https://facebook.github.io/react-native/docs/linking.html. Я могу открыть внешний URL, используя openURL, но Linking.addEventListener, похоже, не работает для меня. Я скопировал фрагмент кода:

componentDidMount() {
  Linking.addEventListener('url', this._handleOpenURL);
},
componentWillUnmount() {
  Linking.removeEventListener('url', this._handleOpenURL);
},
_handleOpenURL(event) {
  console.log(event.url);
}

Ответ 1

Это связано с тем, что у Linking есть определенный метод, когда приложение запускается через намерение.

Попробуйте с этим:

componentDidMount() {
  Linking.getInitialURL().then((ev) => {
    if (ev) {
      this._handleOpenURL(ev);
    }
  }).catch(err => {
      console.warn('An error occurred', err);
  });
  Linking.addEventListener('url', this._handleOpenURL);
}

Ответ 2

У меня была та же проблема, которую мне удалось решить за 2 дня. Вот мои шаги, я надеюсь, что это поможет следующему, который должен справиться, чтобы решить эту проблему.

  1. Перейдите к документации React Native для вашей версии (ВАЖНО) - https://facebook.github.io/react-native/versions
  2. Перейдите к документации API Linking (следуйте инструкциям)

В моем случае я просто добавил этот метод

// iOS 9.x or newer
#import <React/RCTLinkingManager.h>

- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}

После этого прослушиватель событий будет работать правильно. Проверьте версию IOS там есть фрагмент для 8.x и ниже.

Ответ 3

Я столкнулся с проблемой связывания, тогда я просто удалил удаляющий код слушателя, и тогда мой код работал, и мой код был таким.