使用体验
mooc_practice_20161013.png描述
举个例子:用户开启程序,不用等待就能看到课程信息。向下滑动,后台自动获取更多,不用等待加载过程…这些都能一定程度上增加用户使用体验。本次拿首页数据展示来讲怎么利用缓存来提过用户体验的。
方案
对应方案包括3个方面:缓存、在线/本地数据对接、后台加载。
缓存
缓存的处理主要包括两种:
- 图片:借助于开源代码 SDWebImage。
- 数据:借助于本地数据库FMDB
图片的缓存借助于开源代码,这部分工作不多。
数据的缓存,需要根据具体业务建立对应的数据表,设计SQLite数据库操作包括:增(同步、批处理)、删、改、查等。
在线/本地数据对接
这块主要说下规则:对于使用缓存的功能,移动端所有相关展示数据源均从缓存数据表中获取。也就是说,通过在线接口访问数据成功后,首先把数据存储/更新到本地数据库,成功后发相关的数据更新通知。
后台加载
这块主要是针对用户的行为,预加载一些数据。比如当用户向下滑动推荐课程的时候,移动端监听UITableView的offsetY,在展示到当页第N条数据的时候自动调用在线接口获取下一页数据。
课程离线
mooc_offline_20161013.png描述
程序支持线上/线下学习两种模式,课程离线管理主要针对线下模式。当然在线模式情况下,若课程已离线,则从本地离线数据中播放(学习)课程。针对线上/线下课程的学习,需要支持课程学习进度、课程学习状态等多种操作。
方案
课程相关的离线文件直接存放在沙盒相关路径下,使用NSFileManager进行文件持久化管理。
课程课节、学习进度等数据借助于FMDB进行管理。
沙盒中持久化的文件按照课程的形式组织,与数据库中的课程课节表对应。
数据库还要记录具体课节的学习状态,学习进度等。
课程学习
mooc_course_20161013_1.png mooc_course_20161013_2.png描述
课节类型包括视频、音频、文件、在线网页、测验等多种类型。其中前3中支持线上/线下学习。可以根据用户个人设置进行自动播放、续播等操作。
方案
状态的通过 观察者模式 来实现,主要针对以下几种情况:
- 网络状态,比如线上模式下,提示用户网络变更。
- 视频播放状态,比如播放结束后会根据用户个人设置进行续播等相关操作。
- 课节地址,不如播放的过程中,用户点击了其他课节。
配合本地数据库,实现定点续播等操作。
网友评论