新版APP会显示旧版APP启动页图片分析

问题描述, APP旧版用户在更新到新版本后,APP显示旧版的启动页。

第一反应,肯定是缓存引起的。是的,是缓存的问题。用户卸载重新下载安装就好了。

但为什么会出现这样的缓存问题...?  下面分析我遇到的情况:

从头说起,我手里的 APP 1.0 版本是我之前的人写的, 并发布迭代过了许多个小版本,由于线上发生情况比较多。后来我入职公司,要求重新写一版新的 APP 2.0。全新的UI设计,全新的页面逻辑,和数据处理逻辑。于是完全摒弃1.0,开始了2.0。

。。。

终于,2.0 版本发布上线。👏👏/烟花, 聚餐...

。。。

用户反馈:启动页不对。各方面检查代码,没有问题。于是告诉用户是手机缓存的问题,卸载重新安装试一下。用户反馈,确实可以。

又有用户反馈这个情况。嗯 这是个问题了,得弄清楚是什么。

核查自己的代码,项目里面完全没有1.0版本的影子。只有一个地方是一样的,Bundle Indentifier。很显然,不是因为它。

一系列的百度、博客...... 咦~ LaunchScreen.storyboard 的启动图,会把图片缓存到手机里。

去看 1.0 的源码,看到了它的启动图是用的 LaunchScreen.storyboard(以前我也这么用,特别是UI只给的图有限的时候回)。

我这个 2.0 里面使用的启动图实现方式是 Assets.xcassets 里面的添加 launchImage(我的UI太好了,给我切了每个屏幕尺寸的启动图,么么哒)。

难道这是问题发生所在? 测试:

情况一:在手机上面运行 2.0 的代码,再运行 1.0 的代码后,启动图会显示 1.0 的。之后再运行 2.0 的代码,还是显示 1.0。

情况二:卸载后 先运行 1.0 的代码,再运行 2.0 的代码, 启动图显示的仍然是 1.0 的。

嗯 大概是因为这了。 接着,copy 2.0 项目代码,改成 LaunchScreen.storyboard 方式加载。重复上面测试步骤,结果显示正常。copy 1.0 代码,改成 launchImage 方式,结果显示正常。

追加测试,手机运行 1.0 代码,去App Store下载新版,结果1.0启动图。 修改 1.0 使用 launchImage,去App Store下载新版,OK,正常。

/----- ↓ -----/

可以得出结果了,同一项目的不同版本启动页设置方式,要么统一使用LaunchScreen.storyboard实现,要么使用 Assets.xcassets - launchImage实现。

版本间交叉使用的话,会容易出现问题。

/----- ↑ -----/

我遇到的这种情况,各位大猿 大狮正常情况是不会遇到的。一般项目都是统一规划,搭好架构,分工开发。像我这种,直接推翻前面APP版本的,几乎是没有的(独立开发,与前面那人习惯又不一样),之前又没有遇到过。现在我在这个位置,那这个锅得是我的。

是缓存,缓存的很让人措手不及, MARK一下。

顺便提一下,Xcode 9 拖文件进项目的方式,会导致文件读取不到。文件包括 图片,第三方的库等。需使用 右键 - Add file to "项目"的方式添加文件。

个人拙见,仅供参考。 欢迎各位大猿、大狮提供宝贵意见。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,385评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,955评论 25 709
  • 北京,工体 看了票圈,三个刷屏的,才知道今晚是周杰伦的演唱会 印象中,每年他都开演唱会 记忆里,每年我都没抢到票 ...
    瑛太家的猫mio阅读 1,558评论 0 1
  • 玄关又称为「内明堂」,是我们每天进出家门的必经之地,也是整间房子的进气口,虽然所占面积不大,但以居家风水角度...
    函轩阅读 2,312评论 0 0
  • 看了一天的海, 也没觉得累。 昨晚半夜才到南方, 今晨便可以自然醒, 忘了风尘仆仆, 醒来第一件事便是看海。 海景...
    斯禅阅读 2,720评论 0 1

友情链接更多精彩内容