Почему Linking.getInitialUrl и addEventListener результат отличается между IOS и Android? - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь отправить URL для загрузки приложения.

Я установил среду для линковки.

В Android я устанавливаю код в AndroidManifest.xml:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="mychat" android:host="mychat" />
</intent-filter>

В IOS я устанавливаю код в AppDelegate.m:

// Add this above the `@end`:
// iOS 9.x or newer
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}

и задаю типы URL: enter image description here

В моем React Nativeкод о связывании:

  componentDidMount () {
    Linking.getInitialURL().then(url => {
      if (url) {
        console.log('Initial url is:', url);
      }
    }).catch(err => console.log('error is:', err));

    Linking.addEventListener('url', this._handleOpenURL);
  }

  componentWillUnmount() {
    Linking.removeEventListener('url', this._handleOpenURL);
  }

  _handleOpenURL(event) {
    console.log(event.url);
  }

Ситуация на IOS:

Я набираю команду xcrun simctl openurl booted mychat://chat

Получаем результат mychat://chat, которыйисходит из _handleOpenUrl метода.

Ситуация на Android:

Я набираю команду adb shell am start -W -a android.intent.action.VIEW -d "mychat://mychat/chat" com.testan3

Получите результат Initial url is: mychat://mychat/chat, которыйпроисходит от Linking.getInitialURL()

Так почему Linking.getInitialURL() работает только на Android и Linking.addEventListener работает только на IOS?

Я понятия не имею, почему он отличается.Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...