【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇
由于后续篇幅比较大,所以调整了内容结构。
全系列
【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇
【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇
【HELLO WAKA】WAKA iOS客户端 之三 创作模块分析与实现篇(上)
【HELLO WAKA】WAKA iOS客户端 之三 创作模块分析与实现篇(下)
【HELLO WAKA】WAKA iOS客户端 之四 服务器架构设计

MAKA 上周三发布了iOS客户端1.0。本着学习的态度,对MAKA客户端做了分析。
- 功能结构分解
- 架构分析
- API分析
- API数据结构分析
1. 功能结构分解
工具:iPhone,MindNode。
下图是概要的需求分析和功能分解。左边为需求,右边为根据需求实现的功能。
从需求角度和功能模块的实现来看,已经满足用户的最基本需求。
从产品策略来看,先解决有无问题,进而再持续改进。

2. 架构分析
完成了对需求和功能的分解后,我们再来看下APP与服务器的关系。这个时候,神器Charles就上场了。具体使用方式自行搜索。
通过抓取客户端与服务器通信数据分析,客户端与服务器的通信如下图。
1. API服务器。APP与服务器的主通信方式。使用RESTful + form风格接口。前置机为TNginx,后端接口为PHP。
2. 图片存储服务器。用于上传图片。可以注意到的是,采用原图上传 + 按需生成的方式。分离作品编辑和作品。好处有:1)图片数据单独处理,同时简化了客户端逻辑与服务器逻辑。2)方便后续变更。3)按需压缩裁剪图片,生成静态化作品,优化访问速度。
3. 作品浏览服务器。将作品静态化,优化服务器性能。
4. CDN。使用了七牛的图片CDN服务。

3. API分析
工具:Charles Proxy
以下是主要的API。
|
模块 |
名称 |
URL |
Method |
说明 |
|
用户 |
注册 |
/app/user/register |
POST |
|
|
登陆 |
/app/user/login |
POST |
||
|
忘记密码 |
/app/user/forgetpassword |
POST |
||
|
用户信息 |
/app/user/{$user_id} |
GET |
||
|
修改用户信息 |
/app/user/{$user_id} |
PUT |
||
|
事件 |
我的事件列表 |
/app/events |
GET |
|
|
创建 |
/app/event |
POST |
||
|
更新 |
/app/event/{$event_id} |
PUT |
||
|
发布 |
/app/event/{$event_id} |
POST |
||
|
创作 |
主分类 |
/app/specialCategories |
GET |
|
|
模板分类 |
/app/templates |
GET |
||
|
模板页 |
/app/template/{$template_id} |
GET |
||
|
图集分类 |
/app/pictureIndex |
GET |
||
|
图片列表 |
/app/pictures |
GET |
||
|
热门 |
公开事件 |
/app/publicEvents |
GET |
|
|
分类 |
/app/tagCategories |
GET |
1. 用户模块。基本用户接口。比较简单。登陆成功后使用token+uid访问接口。
2. 事件模块。 这部分接口页算简单。
1) 值得注意的是,作品列表数据,作品数据都采用了version号,模板与作品版本更新问题。
2) 模板与作品。 eg. GET /app/template/T_I1629HCW 直接使用在作品ID前加T_ 解决模板与作品的关系。
{
"id": "2BD324I1",
"title": "我的测试项目",
"content": "这是我的测试。",
"thumb": "http:\/\/img1.maka.im\/6IAGSXT4R1S18SV2MP3O",
"version": "1",
"firstImg": "http:\/\/img1.maka.im\/575144\/1440766949nikIOQqegbRpr.jpeg",
"template_id": "T_AHER10I9",
"updateTime": "2015-08-28 11:11:11",
"functionId": "0",
"industryId": "0",
"category_id": "10",
"functionTag": "",
"industryTag": "",
"statData": 0,
"statUrl": "http:\/\/api.maka.im\/statistics\/show\/2BD324I1",
"formData": 0,
"hasForm": 0,
"formUrl": "",
"QRcodeImg": "http:\/\/api.maka.im\/code\/index\/2BD324I1"
}
3. 创作模块。这里没有太多好讲的。基本数据返回。比较赞的是,返回云图册,手机端可以访问PC端上传的图片。
4. 热门模块。简单API。
4. 总结
1. 服务器架构。分离接口访问,作品查看,图片处理,图片存储,CDN。各个服务器都可以进行横向扩展并且单独优化。
2. 客户端架构。
1)第三方库依赖管理。使用Cocoapods管理第三方库。
2)网络库。没有使用AFNetworking,可能是直接使用iOS内置类处理。这个比较意外。
3)数据库。使用FMDB。
4)缓存。SDWebImage。
5)框架。使用ReactiveCocoa,Masonry。
6)其他。其他的一些UI库。
7)不使用Storyboard和xib。
以上,是MAKA iOS的需求和功能分析,以及技术分析。
备注:纯属学习。请勿跨省。
【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇的更多相关文章
- 【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇
上一篇主要做了MAKA APP的需求分析,功能结构分解,架构分析,API分析,API数据结构分析. 这篇主要讲如何从零做iOS应用架构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 ...
- “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX
"快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...
- 开源项目在真机调试(Coding iOS 客户端为例)
一.前言 iOS 13学习系列:如何在github下载开源项目到本地(Coding iOS 客户端为例)已经把 Coding iOS 客户端源码下载到本地. 但项目进行真机调试遇到很多问题. 二.问题 ...
- iOS客户端的在线安装和更新——针对ADHoc证书
这篇文章纯给自己留个备份,所以对AdHoc证书内部分发和对iOS客户端开发不了解的请直接无视. 一般在iOS游戏或应用开发过程中,正式发布到App Store之前,都需要内部的测试,客户端的安装是个不 ...
- 新浪微博iOS客户端架构与优化之路
新浪微博iOS客户端架构与优化之路 随着Facebook.Twitter.微博的崛起,向UGC.PGC.OGC,自媒体提供平台的内 容消费型App逐渐形成了独特的客户端架构模式.与电商和通讯工具类 ...
- iOS应用架构现状分析
iOS从2007年诞生至今已有近10年的历史,10年的时间对iOS技术圈来说足够产生相当可观的沉淀,尤其这几年的技术分享氛围无论国内国外都显得异常活跃.本文就iOS架构这一主题,结合开发圈里讨论较多的 ...
- Nice是如何做iOS客户端架构的?
一个创业产品的iOS客户端架构到底怎么做呢?现下最有活力的图片社交软件Nice的技术负责人刘诗彬将为我们解答创业产品如何实现iOS客户端架构. 分享人:刘诗彬,毕业于北京邮电大学电子信息科学与技术专业 ...
- 精华阅读第 9 期 |滴滴出行 iOS 客户端架构演进之路
「架构都是演变出来的,没有最好的架构,只有最合适的架构!」最近,滴滴出行平台产品中心 iOS 技术负责人李贤辉接受了 infoQ 的采访,阐述了滴滴的 iOS 客户端架构模式与演变过程.李贤辉也是移动 ...
- 开源中国iOS客户端学习
开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客 http://blog.csdn.net/column/details/xfzl-kykhd.html ...
随机推荐
- 用android代码显示图片的一部分源码
ShowPoritionPictureActivity代码: [java] <span style="font-size:16px;"> package com.iwi ...
- svn的使用详细说明
转载请指明:杨凯专属频道 1.在电脑的任意位置创建一个版本库文件夹 最好是全英文的目录 例如 在c:\svn下面创建一个 2.打开此文件,在这里右键 找--TortoiseSVN--->Crea ...
- oracle表空间表分区详解及oracle表分区查询使用方法(转+整理)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- win7无声音显示“未插入扬声器或耳机” 怎么解决
不知道是否有用户朋友跟本人遇到这么一个情况,电脑不论是不是有插上耳机或者扬声器,在机箱前面和后面的耳机插孔处都试了好几遍,win8纯净版系统依旧没有声音. 这时候我们来看一下桌面右下角音量图标显示一个 ...
- empty,is_null,isset返回值的比较
empty,is_null,isset返回值的比较: 变量 empty is_null isset$a="& ...
- Zabbix概念、安装以及快速入门
Zabbix is an enterprise-class open source distributed monitoring solution.[1] Zabbix是一个企业级的.开源的.分布式的 ...
- web前端入门
看到很多同学在咨询:学习前端该怎么入门啊.推荐一下前端入门书籍啊什么的,作为一个过来人,我想告诉你一些小小技巧,避免走弯路: 1.先敲再学.如果你是零基础,就不要去每个标签,每个属性地去抠,因为里面有 ...
- C# 语言规范_版本5.0 (第20章 附录B_语法)
A. 语法 此附录是主文档中描述的词法和语法以及不安全代码的语法扩展的摘要.这里,各语法产生式是按它们在主文档中出现的顺序列出的. A.1 词法文法 input: input-sectionopt i ...
- OBIEE 缓存机制
1,EM下开关缓存和rpd中高速缓存是一件事,就是nqserver的缓存, 由nqsconfig.ini中配置决定cache是否开启. 当然rpd里面还需要设置,具体的表是否要缓存. 这部分可以看这篇 ...
- [Jenkins]admin用户登陆,提示登陆无效(之前登陆OK,三天没有登陆,突然提示登陆无效,重启无法解决)的解决方法
问题出现现象: 系统一直正常,突然某天登陆,提示用户无效,无法登陆成功. 问题分析过程: 1.查看日志:/var/log/jenkins/jenkins.log(通过ps -elf | grep je ...