【问题标题】:'incognito' prop for react-native-webview not working on Androidreact-native-webview 的“隐身”道具在 Android 上不起作用
【发布时间】:2021-06-19 07:30:47
【问题描述】:

我正在使用外部 URL 来处理我的 react-native 应用程序的身份验证。我将用户发送到带有 loginurl 的 webview。以下是我的 Signin.tsx 代码中的 sn-p:-

 <WebView
            cacheEnabled={false}
            source={{uri: this.state.loginUri}}
            onNavigationStateChange={this.onNavigationStateChange}
            incognito={true}
/>

'incognito' 属性在 iOS 上完美运行,但在 Android 上似乎根本不起作用。我的目标是让 Webview 在其生命周期内不保存任何数据。登录有多个页面,输入一个详细信息后,它会自动获取先前登录帐户的详细信息并使用旧凭据自动登录。

我已经尝试将 react-native-webview 更新到最新版本 (v11.3.1),并且还尝试了 CookieManager.clearAll(){used from react-native-community/cookies}。似乎没有任何效果。 有人可以帮我理解为什么它适用于 iOS 而不是 Android 吗?

【问题讨论】:

  • 我有相反的问题 - 我想注销一个用户,我在 Android 上使用 incognito prop 完成,但无法让它在 iOS 上工作。也用过CookieManager,没什么
  • 如果查看代码 WebView 代码,可以看到有 2 组不同的 props,适用于 Android 和 iOS。尝试使用适用于 Android 的 cacheMode 道具:developer.android.com/reference/android/webkit/…

标签: android react-native react-native-webview react-native-cookies


【解决方案1】:

我们遇到了类似的问题,在谷歌搜索后发现Tapani's answer 所以根据他的说法,实际的实现是不同的,所以它们的行为会因操作系统而异。不幸的是,API docs 中没有提到这一点。

在我们的例子中,如果在 Android 上将隐身道具设置为 true,则应用程序无法正常运行,如果设置为 false,它也无法在 iOS 上运行,因此如果是您的情况,您也可以检查平台并相应地设置道具:

<WebView
   cacheEnabled={false}
   source={{uri: this.state.loginUri}}
   onNavigationStateChange={this.onNavigationStateChange}
   incognito={Platform.OS === 'ios'}
/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多