最近我们的APP遇到不能登录的问题,提示登录成功,但登录状态没有生效,APP是用HBuilder打的5+的包。这个问题好像是iOS 13发布正式前不久出现的。
iOS有UIWebview和WKWebview两种webview,从iOS13开始苹果将UIWebview列为过期API。
HBuilderX 2.2.5+版本已将iOS上所有webview的默认内核由UIWebview调整为WKWebview。
由于WKWebview内核比起UIWebview有更多的限制,比如跨域请求和Cookie,导致极端情况下登录成功后状态不生效,比如一些打的本地包的5+App,就是跨域的Cookie,这种情况下就登录不上。我们的APP就是这个问题。
解决办法:
-
session/cookie改用Token验证方式,本地存储用localStorage
-
改用原来的UIWebvie内核,需要修改
mainfest.json
文件,修改如下
"plus": {
"kernel": {
"ios": "UIWebview"
},
// ...
}
第一种方式比较费时间,但一劳永逸,第二种是临时性的方式,苹果新规实施后就不能再提交App Store了。