【发布时间】:2021-05-25 10:04:56
【问题描述】:
我的App.js 中有以下代码:
import React, { useState, useRef, useEffect } from 'react';
import { SafeAreaView, Text } from 'react-native';
import { NavigationContainer, useLinking } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
const Stack = createStackNavigator();
const Screen1 = () => <SafeAreaView><Text>Screen1</Text></SafeAreaView>;
const Screen2 = () => <SafeAreaView><Text>Screen2</Text></SafeAreaView>;
export default function App() {
const ref = useRef();
const [isReady, setIsReady] = useState(false);
const [initialState, setInitialState] = useState();
const { getInitialState } = useLinking(ref, {
prefixes: ['http://example.com', 'mychat://'],
config: {
screens: {
Screen2: 'screen-2',
},
},
});
useEffect(() => {
getInitialState().then((state) => {
if (state !== undefined) setInitialState(state);
setIsReady(true);
});
}, [getInitialState]);
if (!isReady) return null;
return (
<NavigationContainer ref={ref} initialState={initialState}>
<Stack.Navigator>
<Stack.Screen name='Screen1' component={Screen1} />
<Stack.Screen name='Screen2' component={Screen2} />
</Stack.Navigator>
</NavigationContainer>
);
}
大部分都是从https://reactnavigation.org/docs/deep-linking/和https://reactnavigation.org/docs/use-linking/复制过来的。
在文档中有prefixes: ['https://mychat.com', 'mychat://'],我只是将https://mychat.com 更改为http://example.com。但这似乎不起作用。
当我在 Safari 中打开以下链接时:
-
mychat://(有效,被重定向到应用Screen1) -
mychat://screen-2(有效,被重定向到应用Screen2) -
http://example.com(只是在浏览器中打开链接,没有弹出重定向到应用程序)
我需要进行哪些更改才能将域名重定向到移动应用程序?我错过了什么吗?
【问题讨论】:
标签: ios react-native react-navigation deep-linking