Я пытаюсь отправить 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:
В моем 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?
Я понятия не имею, почему он отличается.Любая помощь будет оценена.