Nativescript-vue 在 Android 上保存 cookie
Posted
技术标签:
【中文标题】Nativescript-vue 在 Android 上保存 cookie【英文标题】:Nativescript-vue save cookies on Android 【发布时间】:2020-05-14 21:10:10 【问题描述】:我正在使用 nativescript-vue 创建一个简单的 webview 应用程序,其中除了加载网站全屏的 webview 之外,应用程序中没有其他内容。
在 ios 上效果很好,我可以登录网站关闭应用程序然后再打开,我仍然处于登录状态。
在 android 上,cookie 不会保存,每次关闭应用程序时您都必须重新登录。
我可以通过什么方式在 Android 的 web 视图中启用 cookie?
【问题讨论】:
【参考方案1】:我无法让它与 cookie 一起工作,所以我不得不切换并使用 localstorage 作为保存令牌而不是 cookie 的备份。
这是我的最终版本的外观:
<template>
<Page>
<WebView @loadStarted="onLoadStarted"
@loaded="onWebViewLoaded"
src="https://yoururl.com/"
/>
</Page>
</template>
<script>
import isAndroid from "tns-core-modules/platform"
export default
methods:
onLoadStarted (webargs)
if (isAndroid)
const webView = webargs.object;
webView.android.getSettings().setDomStorageEnabled(true) // This will enable local storage
,
onWebViewLoaded(webargs) // I use this only to disable the default zoom buttons
if (isAndroid)
const webView = webargs.object;
webView.android.getSettings().setDisplayZoomControls(false)
webView.android.getSettings().setBuiltInZoomControls(false)
,
;
</script>
显然,您应该能够启用 cookie 这样做(至少对于较新的 SDK 用户):
webView.on(WebView.loadStartedEvent, (args) =>
webView.android.getSettings().setAcceptThirdPartyCookies(webView, true)
);
但这并没有按预期工作,因为有时它会保存 cookie,有时它不会,或者有时它会删除 cookie(当您注销时),有时不会。
我希望这些信息对某人有所帮助,因为似乎几乎没有关于此的信息,特别是如果您不太熟悉纯 Java Android 开发。
【讨论】:
【参考方案2】:这段代码应该可以工作
const webView = webargs.object;
if (android.os.Build.VERSION.SDK_INT >= 21)
android.webkit.CookieManager.getInstance().setAcceptThirdPartyCookies(webView.android, true);
【讨论】:
以上是关于Nativescript-vue 在 Android 上保存 cookie的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Nativescript-Vue 中使用 nativescript-drawingpad?
在 Nativescript-Vue 中使用 FontAwesome
在 nativescript-vue 的 FlexboxLayout 中将标签居中