我的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 (works,被重定向到app Screen2)http://example.com )(只在浏览器中打开链接,没有弹出以重定向到app)我需要做什么改变才能将域名重定向到移动应用程序?我是不是遗漏了什么?
发布于 2021-02-23 09:11:46
您需要使用与服务器一起访问的域。
您的服务器需要托管几个文件,通常位于.well-known目录中:
apple-app-site-association (注意,.json不是needed)assetlinks.json你还需要在你的应用程序中为iOS启用一些权利,这对于安卓来说也是如此。在iOS上,这将在webcredentials:yourdomain.com条目旁边启用关联域权限
通过这些文档可以很好地理解需要做什么才能实现通用链接
示例:
https://stackoverflow.com/.well-known/apple-app-site-association
-
https://stackoverflow.com/questions/66327978
复制相似问题