针对大中型企业、单位的知识管理和学习特点,打造专注服务企业的慕课平台。让企业、学校和企事业单位教育培训快速上线,拥有自己独立、安全私密的教育培训平台。

使用体验

描述

举个例子:用户开启程序,不用等待就能看到课程信息。向下滑动,后台自动获取更多,不用等待加载过程…这些都能一定程度上增加用户使用体验。本次拿首页数据展示来讲怎么利用缓存来提过用户体验的。

方案

对应方案包括3个方面:缓存、在线/本地数据对接、后台加载。

缓存

缓存的处理主要包括两种:

  • 图片:借助于开源代码 SDWebImage
  • 数据:借助于本地数据库FMDB

图片的缓存借助于开源代码,这部分工作不多。
数据的缓存,需要根据具体业务建立对应的数据表,设计SQLite数据库操作包括:增(同步、批处理)、删、改、查等。

在线/本地数据对接

这块主要说下规则:对于使用缓存的功能,移动端所有相关展示数据源均从缓存数据表中获取。也就是说,通过在线接口访问数据成功后,首先把数据存储/更新到本地数据库,成功后发相关的数据更新通知。

后台加载

这块主要是针对用户的行为,预加载一些数据。比如当用户向下滑动推荐课程的时候,移动端监听UITableView的offsetY,在展示到当页第N条数据的时候自动调用在线接口获取下一页数据。

课程离线

描述

程序支持线上/线下学习两种模式,课程离线管理主要针对线下模式。当然在线模式情况下,若课程已离线,则从本地离线数据中播放(学习)课程。针对线上/线下课程的学习,需要支持课程学习进度、课程学习状态等多种操作。

方案

课程相关的离线文件直接存放在沙盒相关路径下,使用NSFileManager进行文件持久化管理。
课程课节、学习进度等数据借助于FMDB进行管理。

沙盒中持久化的文件按照课程的形式组织,与数据库中的课程课节表对应。
数据库还要记录具体课节的学习状态,学习进度等。

课程学习


描述

课节类型包括视频、音频、文件、在线网页、测验等多种类型。其中前3中支持线上/线下学习。可以根据用户个人设置进行自动播放、续播等操作。

方案

状态的通过 观察者模式 来实现,主要针对以下几种情况:

  • 网络状态,比如线上模式下,提示用户网络变更。
  • 视频播放状态,比如播放结束后会根据用户个人设置进行续播等相关操作。
  • 课节地址,不如播放的过程中,用户点击了其他课节。

    配合本地数据库,实现定点续播等操作。