Я пытаюсь внедрить Глубокие ссылки в React Navigation 5 в мой проект React Native 0.61, который был создан с помощью init-native init.
Когда приложение работает в фоновом режиме, глубокая связь работает. На моем устройстве Android я могу нажать https://myproject.com/content/5, и приложение правильно перейдет в раздел контента и отобразит контент с идентификатором 5.
Однако, если я убью приложение (или установите его, не открывая его) и нажмите на ту же ссылку, по которой я перехожу на домашнюю страницу вместо перехода на соответствующую страницу содержимого.
Активность в моем AndroidManifest. xml:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="http" />
<data android:scheme="https" />
<data android:host="myproject.com"/>
</intent-filter>
</activity>
Мясо и картофель приложения. js:
const config = {
Content: {
path: "content/:id",
parse: {
id: Number
}
}
};
const App = () => {
const {state} = useContext(Context);
const ref = React.useRef();
const { getInitialState } = useLinking(ref, {
prefixes: ['http://myproject.com'],
config
});
const [isReady, setIsReady] = React.useState(false);
const [initialState, setInitialState] = React.useState();
useEffect(() => {
Promise.race([
getInitialState(),
new Promise(resolve => setTimeout(resolve, 150)),
])
.catch(e => {
console.error(e);
})
.then(state => {
if (state !== undefined) {
setInitialState(state);
}
setIsReady(true);
});
}, [getInitialState]);
return (
<NavigationContainer initialState={initialState} ref={ref} >
{state.isLoading || !isReady ?
(
<Stack.Navigator screenOptions={{headerShown: false}}>
<Stack.Screen name="Loading" component={LoadingScreen} />
</Stack.Navigator>
)
:
<MainStack />
}
</NavigationContainer>
);
};
Что нужно сделать, чтобы приложение переместилось на страницу содержимого, когда пользователь Android открывает приложение с помощью глубокая ссылка, когда приложение ранее было убито?
Я также хотел бы сохранить текущее поведение глубоких ссылок, когда глубокая ссылка работает, когда приложение находится в фоновом режиме.
Проблема также объясняется здесь , но ни одно из предложенных решений не помогло мне.