LCNewFeature
LCNewFeature copied to clipboard
shouldShowNewFeature里的版本判断是不是有问题
这个方法里是分别获取沙盒中版本号和当前的版本号,如果版本号相同,则返回NO表示不显示引导界面;如果不同,则显示引导界面 这难道不就意味着:只要每次升级版本,都会显示这个引导页面——我觉得应该没有这个必要,更可取的是:只有重大版本升级时,才显示引导页面
新特性界面嘛,一般来说每次升级完之后给用户看的。 每次升级都需要重新打包,所以项目的新特性图片也可以随时更换,这样代码就不用修改。 当然如果某次升级后不想显示新特性界面,shouldShowNewFeature这个方法直接返回个NO就ok,或者直接不导入LCNewFeature.h、不调用LCNewFeature中的方法即可啦。
应该对引导页面的内容建立一个单独的引导页面版本的概念。假如这一版本的引导页面用户已经看过了(把这个版本号存在沙盒中),就不显示。否则在沙盒中找不到该版本的引导页面,则显示。
当前版本升级是否需要显示新特性界面的情况如下:
- 需要显示:在写新版本代码时,调用框架使新特性界面显示,打包上架。
- 不需要显示:在写新版本代码时,不调用或注释相关代码或用宏控制框架,使新特性界面不显示,打包上架。
- 重大版本升级时显示/根据某些情况智能决定是否显示:首先,欢迎 PR 智能判断规则…… 其次,每个项目需求不尽相同,该种情况的需求完全可以根据上述 1. 2. 交由代码来控制。TL, DR 另外,“重大版本升级时”这个概念框架很难判断,你可以说根据如
V 1.2.3
->V 2.0.0
的升级认为是大版本,但是这真的是“重大版本”的定义吗?那认为V 1.2.3
->1.3.0
是重大升级的项目怎么办?认为V 1.2.3
->1.2.4
是重大升级但是 CTO 不让改前两位版本号的项目怎么办?而诸如(Android KitKat
->Android Lollipop
->Android Marshmallow
)之类的奇怪但很有趣的版本定义又该怎么办?这个智能判断规则能写出来吗?不能,因为“重大版本”本身就是感性认识,而不是理性规则。
@orchidFang 你说的需求是框架开始写就有的,新特性在当前版本当然只显示一次,框架貌似没有不这么干? https://github.com/iTofu/LCNewFeature/blob/master/LCNewFeature/LCNewFeatureVC.h#L153 https://github.com/iTofu/LCNewFeature#代码-code