背景
HOJO 口红客户线上数据异常, 1500 左右的 click, 但是网站记录的 content_view 却只有 60-70 个, 经过排查, 发现 Android webview 内部跳转场景无法上报埋点, 而这次投放又只投放了 Android
经过和 SDK 小伙伴的确认, 了解到安卓在初始化内部跳转的 webview 时只开启了 JavaScript 和浏览器缓存, 其他特性都没有开启, 包括用于开启 localStorage 的 setDOMStorageEnabled(true)
兼容外部浏览器和 webview 的数据持久化方案
https://gist.github.com/klovelovely/c635639bda777c8e14dcc6dcc9bd8d22
一个兼容方案, 对不支持 localStorage 的 Android webview 内跳场景使用 cookie 存储, 默认优先使用 localStorage
具体原因:
- iOS >= 10 下 Safari 存储 cookie 时, path=/ 无效 (始终会以当前 url 路径存储), 导致不同的父级路径无法读取 cookie
- Android webview 默认不支持 localStorage, 需要显式声明: wv.getSettings().setDomStorageEnabled(true);