gpt4 book ai didi

android - react 导航深度链接打开应用程序但不纠正页面

转载 作者:行者123 更新时间:2023-11-29 02:18:32 25 4
gpt4 key购买 nike

问题

我正在尝试设置深层链接,但它没有打开到我的 URL 中指定的正确屏幕。该应用程序打开但始终打开当前屏幕,而不是 URL 中指定的屏幕。

我的应用程序具有以下导航结构,我试图在应用程序打开时导航到“通知”屏幕

  1. 顶级切换导航器
    1. 启动画面
    2. AuthLoading 屏幕
    3. 应用程序(底部标签导航器)
      1. 首页
      2. 简介
      3. 通知
    4. 授权

我尝试过的

我已经尝试设置一个新的应用程序并关注他们的 documentation它在新项目中可以正常工作,但我无法在当前项目中使用它。我还在新项目中包含了 redux 以测试相同的环境。

我正在通过为 iOS 运行 xcrun simctl openurl booted esportsdeeplink://app/notificationsadb shell am start -W -a android.intent.action.VIEW -d 进行测试“esportsdeeplink://app/notifications” com.benji.esportscompetition for android。

打开应用但没有导航到指定页面的结果相同

环境

  • react-native v0.60.4
  • react 导航 v3.11.1
  • redux v4.0.4
  • react-redux v7.1.0

代码我试图包括所有相关代码,但减少了一些导入和其他代码以尽量简洁。如果您觉得有帮助,我可以发布任何其他代码

Index.js(入口点)

import App from './src/app/App';

const ReactNativeRedux = () => (
<Provider store={store}>
<PersistGate loading={<SplashScreen />} persistor={persistor}>
<PushNotifications />
<App />
</PersistGate>
</Provider>
);

AppRegistry.registerComponent(appName, () => ReactNativeRedux);

App.js

import AppContainer from './Components/BottomNavigation/NavigationRouting';

class App extends React.Component {
render(props) {
const prefix = 'esportsdeeplink://'
console.log('prefix', prefix)
return (
<Fragment>
<View style={{ flex: 1, backgroundColor }}>
<StatusBar translucent backgroundColor="transparent" />
<LoadingSpinner loading={this.props.loading} />
<AppContainer
ref={(navigatorRef) => {
NavigationService.setTopLevelNavigator(navigatorRef);
}}
uriPrefix={prefix}
screenProps={{
http,
saveFriendsFnUser: this.saveFriendsFnUser,
signupComplete: this.signupComplete,
}}
/>
</View>
</Fragment>
);
}
}

const mapStateToProps = (state) => ({
loading: state.api.loading,
user: state.user,
math: state.math,
response: state.response,
});

const mapDispatchToProps = (dispatch) => ({
startupRequest: () => {
dispatch(startupRequest());
},
});

export default connect(
mapStateToProps,
mapDispatchToProps,
)(App);

NavigationRouting.js(创建导航器的地方)

const BottomTabNav = createBottomTabNavigator(
{
Home: {
screen: HomeScreen
},
Profile: {
screen: ProfileStack
},
Notifications: {
screen: Notifications,
navigationOptions: () => ({
tabBarVisible: false
}),
path: 'notifications',
},

},
{
tabBarComponent: CustomTabNav,
initialRouteName: "Home"
}
);

export default createAppContainer(
createSwitchNavigator(
{
SplashScreen,
AuthLoading: AuthLoadingScreen,
App: {
screen: BottomTabNav,
path: 'app',
},
Auth: {
screen: AuthStack,
path: 'auth'
}
}
)
);

深层链接设置

iOS

iOS setup

projectFolder/ios/eSportsCompetition/AppDelegate.m

#import <React/RCTLinkingManager.h>

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [RCTLinkingManager application:application openURL:url
sourceApplication:sourceApplication annotation:annotation];
}

@end

安卓

项目文件夹/android/app/src/main/AndroidManifest.xml

 <activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize"
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="esportsdeeplink" />
</intent-filter>
</activity>

最佳答案

尝试在 uriPrefix={...} enableURLHandling={true} 下设置

我还在我的 AppDelegate.m 文件中添加了这个:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:app openURL:url options:options];
}

当应用程序在后台运行时这对我有用,但当应用程序被终止时则不起作用。

关于android - react 导航深度链接打开应用程序但不纠正页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58150141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com