你的位置:首页 > 软件开发 > 操作系统 > 【原】博客园第三方客户端App开源

【原】博客园第三方客户端App开源

发布时间:2016-04-03 23:00:19
【原】博客园第三方客户端-i博客园App开源本文转载请注明出处 —— polobymulberry-博客园1.前言目前i博客园App已经更新到2.0.0版本了,使用了最新的博客园Web API。相比于第一个版本,添加了很多新的功能,也修改了 ...

【原】博客园第三方客户端App开源

【原】博客园第三方客户端-i博客园App开源

本文转载请注明出处 —— polobymulberry-博客园


1.前言


目前i博客园App已经更新到2.0.0版本了,使用了最新的博客园Web API。相比于第一个版本,添加了很多新的功能,也修改了很多功能。整体来说改动比较大,代码也比较混乱。所以趁着清明假期,把代码好好整理了一番。目前基本的架构已成型(当然,后期还需要不断优化),但App基本功能方面还有很多需要添加的,后面会集中把App功能完善。

上面简单介绍了下目前App的情况,回到开源的话题来。开源这个App源码其实是我从一开始就有的愿景,不过当初代码很混乱,所以一直拖啊拖,中间也有很多实验室的事情,不过我一直也没放弃过要开源的这个想法。开源对我来说利大于弊的:

  1. 虽然我不是什么大牛,开源的代码也不是什么牛逼的项目。但是我觉得成为大牛总是有过程的,我希望我写博客或者开源代码可以记录下这些过程。很多牛人,比如说郭曜源大神(YYKit),等项目成熟了再一起发布出来。但是我观念不一样,我觉得开源代码也是一个产品,如果从做产品的思维来说,很重要的一点就是迭代开发,当我完成产品的基本功能后,我就应该去上线,和用户交流,再继续迭代开发下一版本的产品。目前我觉得我的代码整体架构差不多了,所以我觉得可以放到GitHub上了。
  2. 开源代码的目的主要还是为了想更多的人参与进来,本质也是为了督促自己学习。目前App功能还不完善,个人的力量也有限,希望能有更多的人加入进来,众人拾柴火焰高。
  3. 另外将自己的代码暴露出来,让大家批评指正,也是增强自己技术的有效途径。如果有幸能得到大神指点,那就一日千里了,哈哈(做梦吧你)!其实我觉得自己之前一直蒙头做自己的事,不和外界交流,这样不好,容易成为井底之蛙。
  4. 最后一个也是比较重要的——满足我的虚荣心(大家不要吝啬,多给我点小星星。哈哈,我就是这么不要脸!不要脸!要脸!脸!)

2.新版本i博客园App效果


之前版本的i博客园请移步《博客园第三方客户端-i博客园正式发布App Store》。因为换了新的Web API,所以增加了很多新功能,比如文库、登录等等。

博客新闻文库
【原】博客园第三方客户端App开源【原】博客园第三方客户端App开源【原】博客园第三方客户端App开源
我-登录我-非登录 
【原】博客园第三方客户端App开源【原】博客园第三方客户端App开源 

3. i博客园代码结构简介


3.1 代码整体结构

【原】博客园第三方客户端App开源

整体代码是按功能模块来划分的,而每个功能模块是按MVC来的(下面会介绍)。这里我一共分为7个模块:1.博客(Blog)  2.新闻(News) 3.文库(知识库Library) 4.闪存(暂时未实现,Flash) 5.我(Me) 6.引导页(Guide) 7.主要(Main)

3.2 各模块介绍

3.2.1 博客

【原】博客园第三方客户端App开源

博客的内容主要包括两部分,一个是首页,另一个精选

首页部分使用的是简单的tableView,每个cell的类型就是放在BlogHomeTableViewCell目录下的ICBlogHomeTableViewCell。其中动态计算cell高度是使用了UITableView+FDTemplateLayoutCell这个库。精选部分使用了自定义collectionViewLayout,名叫ICBlogPickedCollectionViewLayout。另外,这两个部分放在了一个scrollView(ICBlogScrollView)中。

首页精选
【原】博客园第三方客户端App开源【原】博客园第三方客户端App开源

至于每个Blog的内容呈现,我使用的是KINWebBrowser库,而非使用从服务器端获取的JSON数据来解析,因为JSON解析的效果很差,还不如直接用Web浏览器显示好看。使用KINWebBrowser时,你只需双击页面,即可放大到最佳阅读模式,使用UIWebView无法做到这一点。

3.2.2 新闻

【原】博客园第三方客户端App开源

新闻的内容主要包括三个部分:最新(ICNewsNewestTableView)、推荐(ICNewsRecommendTableView)、热门(ICNewsHotTableView)。

三者都使用了tableView,放在一个scrollView(ICNewsScrollView)中。每个tableViewCell都是ICNewsTableViewCell类型。个人比较喜欢简洁风格。

【原】博客园第三方客户端App开源

不过新闻的内容显示,我是自己解析JSON数据进行排版的。自定义了一个ContentHTMLTemplateWithArgs的宏函数来构建HTML数据。

3.2.3 文库

【原】博客园第三方客户端App开源

基本同新闻,不过tableViewCell使用的是ICLibraryTableViewCell。

【原】博客园第三方客户端App开源

3.2.4 闪存(暂时未实现)

这一块后面会重点做一下,因为这是用户交流比较重度的一部分。

3.2.5.我

【原】博客园第三方客户端App开源

这一块做的比较久,UI相对来说比较复杂,另外也涉及到OAuth的知识。OAuth部分推荐dudu的OAuth系列博客。

Me这一块其实是由两个两部分组成,一个是登录部分,一个是个人中心部分

**登录部分**

1.获取用户名和密码

2.将用户名和密码使用openssl进行rsa加密

3.再利用grant_type为password的OAuth认证方式来登录。

**个人中心**

我的博客和我的收藏都很简单,就是简单的tableView,连cell都没自定义。

设置部分功能就比较杂:

①清除缓存使用的是SDWebImage,异步清除,代码如下:

ICLog(@"size count : %ld",[[SDImageCache sharedImageCache] getSize]);dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  [[SDImageCache sharedImageCache] clearDiskOnCompletion:^{    ICLog(@"清除成功");    ICLog(@"size count : %ld",[[SDImageCache sharedImageCache] getSize]);    cell.textLabel.text = [self getCacheSize];  }];});

原标题:【原】博客园第三方客户端App开源

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录