问题描述
线上版本直接覆盖安装老的商户通出现登录不了的bug
问题追踪
真机安装老商户通 ——〉真机安装新商户通(模拟覆盖安装)——〉登录接口成功 ——〉默认商户接口不通 ——〉默认商户接口需要的请求头AUTHORIZATION为空 ——〉数据库的QCODEUSER表没有存储AUTHORIZATION字段 ——〉QCODEUSER表没有成功创建 ——〉在老商户通的数据库中添加表失败 ——〉解决办法:在启动app时把老商户通的数据库文件删除
通过在真机上先安装老商户通,再安装新商户通,一步步debug调试发现:登录接口可以走通,而后走的获取默认商户接口不通,覆盖安装的新商户通在登录接口走通后要把用户信息存储到数据库中时发生能打开数据库可无法成功创建新表的问题。如此,导致登录接口返回的信息无法存储到新表中,而默认商户接口请求头需要存储在新表中AUTHORIZATION字段。AUTHORIZATION为空,导致默认商户接口不通,从而无法成功跳转进app内,表现出来就是无法正常登录。
问题解决方案
在覆盖安装时将老商户通的db文件删除
复盘
在备机测试覆盖安装时曾经出现过覆盖安装不能登录的问题,当时排查到的原因是老商户通以单例形式存在NSUserDefault中的数据被加到了新商户通的网络请求参数中,导致接口走不通,后来采取在app第一次启动时删除NSUserDefault中存储的老数据方式解决。当时之所以通过了测试,是因为老商户通app没有点击pos申请项,也就是还没有创建数据库,所以不影响新商户通的数据库创建和存储。
当时也有考虑到老商户通的数据库会不会也对新商户通产生影响,后来单方面以为数据库的路径肯定不一样,且不清楚老商户通的数据库路径,忽略了对老数据库文件的删除。
没有做到刨根问底,思想上先入为主。
网友评论