Я использую
Код: Выделить всё
android.webkit.CookieManager
Код: Выделить всё
WebView
Код: Выделить всё
Max-Age=0
Код: Выделить всё
WebView
Код: Выделить всё
WebView
Код: Выделить всё
class CookieProviderImpl(
private val cookieManager: CookieManager,
private val analyticsEventLogger: AnalyticsEventLogger,
) : CookieProvider {
override suspend fun injectCookies() {
val baseUrl = "www.baseURL.com"
val currentCookies = cookieManager.getCookie(baseUrl)?.split("; ")?.associate {
val (name, value) = it.split("=")
name to value
} ?: mapOf()
cookieManager.setAcceptCookie(true)
val cookiesToSet = mapOf(
CookiesNames.DEVICE_ID to analyticsEventLogger.getVisitorId(),
CookiesNames.SESSION_ID to analyticsEventLogger.getSessionId(),
CookiesNames.SESSION_TIMESTAMP to System.currentTimeMillis().toString()
)
currentCookies.forEach { (name, _) ->
if (cookiesToSet.keys.contains(name)) {
cookieManager.setCookie(baseUrl, "$name=''; Max-Age=0")
}
}
cookieManager.flush()
cookiesToSet.forEach { (name, value) ->
cookieManager.setCookie(baseUrl, "$name=$value")
}
cookieManager.flush()
}
override fun removeAllCookies() {
cookieManager.removeAllCookies(null)
}
}
Код: Выделить всё
CookieProvider
Код: Выделить всё
ViewModel
Код: Выделить всё
VM
Код: Выделить всё
composable
Код: Выделить всё
AndroidView
I inject the cookies in two places, first on initialization
Код: Выделить всё
LaunchedEffect(key1 = Unit, block = {
launch(Dispatchers.Main) {
viewModel.injectCookies()
}
})
Код: Выделить всё
AndroidView(
factory = { context ->
WebView(context).apply {
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
onCanGoBackChange(view?.canGoBack() ?: false)
super.onPageStarted(view, url, favicon)
}
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
runBlocking { injectCookies() }
return super.shouldOverrideUrlLoading(view, request)
}
}
}
},
update = { webview ->
onWebViewUpdate(webview)
webview.loadUrl(url)
}
)
Источник: https://stackoverflow.com/questions/781 ... xpire-them