解决Android嵌套H5每次打开App都要进行登录的问题

在这里插入图片描述

使用场景

  当我们在实现原生App使用Webview打开网页时候,即Android嵌套H5页面,如果用户已经在我App登录过,这时候再让用户进行一次登录操作,就会造成一种非常不友好的用户体验。那么,我们应该如何去实现无需二次登录这个问题呢?


问题描述

  App只是一个“壳”的作用,由于登录功能是在H5中实现的,所以希望实现用户第一次登录后,关闭App或者过段时间再次打开App的时候,我们希望它会自动跳过登录这个步骤。即验证我们已经登录过,无需重复登录。现在市面上的大部分应用,都是这种实现,比如某宝、某东等。下面请看大致思路实现!


思路分析

  我们可以将H5的登录信息,比如token等信息,通过Android的CookieSyncManagerCookieManager实现H5的登录信息进行同步和保存到手机中储存,类似于浏览器的cookie缓存一样,也就是保存H5用户登录的信息,进行一个同步,


解决方案

  根据上述的思路分析,我们可以在Android的webView.setWebViewClient里面的onPageFinished这个方法中实现,具体源码参考下面:

 //获取H5的token设置缓存
 CookieSyncManager.createInstance(MainActivity.this);
 //保留cookies,而不是在随后的重新启动后清除
 CookieManager cookieManager = CookieManager.getInstance();
 // 允许接受 Cookie
 cookieManager.setAcceptCookie(true);
 // 设置webView支持JS的Cookie的调用,5.0以上才要设置
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
     // 跨域cookie读取
     cookieManager.setAcceptThirdPartyCookies(view, true);
 }
 //移除Cookie
 //cookieManager.removeAllCookie();
 String val = cookieManager.getCookie(url);
 System.out.println("H5 cookie:" + val);
 String urlDecoder = URLEncodeing.toURLDecoder(val);
 // 向WebView中添加Cookie,一定要给主域设置cookie,给子级地址设置,父级会无法获取到cookie值
 cookieManager.setCookie(url, urlDecoder);
 // 刷新,同步
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
     CookieManager.getInstance().flush();
 }
 CookieSyncManager.getInstance().sync();
 //验证是否将cookie同步进去
 //String newCookie = cookieManager.getCookie(url);
 //System.out.println("newCookie:" + newCookie);

  到此就完成了,重新执行app安装,你就会发现App登录过后,无论是关闭后二次打开,还是隔断时间再次打开,都无需进行登录即可进入App主页,赶紧去试试吧!祝“码”到成功!

结语

  此方案仅供参考,你可以根据自行的项目需求进行优化,具体实现多久重新登录一次,这个问题可以从token中设定,即你的token有效期!

在这里插入图片描述
创作不易,感谢您的点赞与支持。
  • 33
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 39
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值