iOS开发---业务逻辑
iOS开发---业务逻辑
1. 业务逻辑
iOS的app开发的最终目的是要让用户使用, 用户使用app完成自己的事就是业务逻辑, 业务逻辑的是最显眼开发工作.
但是业务逻辑对于开发任务来说, 只是露在大海表面为上那一小截冰山, 为了支撑业务逻辑, 需要大量的其他功能的开发.
如果只看到了业务逻辑的开发, 而没有全面的审视其他开发工作, 很容易在估计进度, 安排资源, 分解任务等方面估计不足.
那么, 开发一个iOS app, 业务逻辑之外, 或者说在支撑业务逻辑方面, 还有哪些容易忽略的开发工作呢?
2. 身份验证
大多数的app, 会需要一套身份验证系统, 把用户信息进行管理, 验证. 并且该功能在开发的时序上, 应该是靠前的. 会需要开发以下功能:
- 让用户能够注册, 登陆, 登出.
- 关联社交网络的账号, 导入社交账号信息, 解除社交账号绑定.
- 对用户的会话, 或者令牌进行相关处理.
- 针对用户是否登陆, 以及用户的不同类型, 屏蔽, 启用相关功能. 并且在用户登陆成功后, 跳转到登陆前要进入的视图.
4. 自定义控件
赞美伟大的UI设计, 他们进行设计的时候, 总是会考虑惊艳的视觉效果, 容易设计出一些iOS本身不存在的控件. 虽然在github上又大量的第三方开源控件, 但是很难说有和UI设计一致的.
这时候, 要么需要从头开发自定义控件, 要么需要将开源的控件进行代码修改. 通常这都是颇有难度的耗时工作.
3. 性能优化
一个运行缓慢, UI响应延迟的app不是好app, 一个耗费大量手机电量, 占用大量存储控件, 内存的app也不是一个好app, 一个会崩溃的app, 甚至都无法上架.
所有这些问题的解决, 都需要靠性能优化来解决. 这个工作常常需要在功能开发完毕后, 进行一次调整. 其中涉及较多有难度的技术问题, 更是增加了该工作的难度.
4. 测试和调试
很少有一个app, 开发完了之后即完全符合产品设计的意图, 又没有bug. 其实不是很少, 是完全没有.
当app功能开发完成的时候, 会发现不是想要的样子, 或者存在莫名的bug, 需要进行修改. 人们在估计工作量的时候, 很容易按照一次就能无bug完全正确的开发出功能, 这样估计太乐观.
5. 屏幕适配
iOS系统现在有4/4s, 5/5s, 6, 6p, ipad等多种尺寸, app需要支持几种设备, 界面就需要适配几种屏幕.
虽说有auto layout 之类的帮助你完成这项工作, 但是还是常常需要硬编码来进行适配.
想一想每开发完一个功能, 都需要在所有设备上都确认一下ok, 肯定会多花出一些时间.
6. 版本适配
iOS系统目前最多的是iOS7和iOS8, iOS6也有一些. 为了让app安装到更多人的手机上, 需要支持多个iOS版本.
但是, 各个iOS版本可提供的api, 以及系统的行为特性都是不一样的. 对于一些功能, 需要些多套代码, 调用不同的api来实现.
7. app操作引导
就是app使用教程, 做的好的一些app, 都加入了交互式的教程, 这在游戏类或者工具类的app中尤为常见.
这也是一项可能忽略的功能, 当然这个功能不是必须的.
8. 点评引导
为了增加好评率, 一个优秀的app会在合适的时机, 合适的位置, 弹出对话框, 对用户说"亲, 上app store给个五星吧!".
9. 分享
大多数的app需要支持分享, 需要把qq空间, 微信朋友圈, 新浪微博等等的分享集成进来. 集成工作花样繁多, 注册第三方的信息也过程繁琐.
10. 反复迭代
产品经理对产品的认识随着开发也会变化, 有的功能会死掉, 有的功能会变掉, 有的功能会加进来.
如果只看到项目启动时需求列表里的的功能, 并认为最后实现的就是那些, 就略显天真了.
11. 缓存的处理
对于有后端服务器的app, 通常需要对一些网络请求的资源进行缓存. 以图片等较大的文件数据为主.
可以使用第三方的, 也可以自己做, 反正这项工作是摆在那里的.
缓存的有效期, 怎成清除, 允许的最大空间, 也都是要考虑和处理的.
12. app的发布
需要设置app的名称, 关键字, 描述, 制作漂亮的截图, 甚至是视频. 提交之后, 还得等着一周以上的审核时间.
学习:http://www.jianshu.com/p/7e5670e0ca2f
iOS开发---业务逻辑的更多相关文章
- MVC5 网站开发之四 业务逻辑层的架构和基本功能
业务逻辑层在Ninesky.Core中实现,主要功能封装一些方法通过调用数据存储层,向界面层提供服务. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑
Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案如下所示: 下面我们讨论整个应用的结构,根据应用中不同组件的逻辑相关性,分离到不同的层中,层与层之间的通讯通过或者不通过限制.分层属于架构 ...
- ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑
上次搭建好了项目框架,但还是觉得不太对劲,后来才想起来没有对开发目标进行定位,这个小demo虽然不用做需求分析,但是要实现什么效果还得明确.后来想了一下就做个最简单的网站,目标定为小公司进行展示用的网 ...
- 用c#开发微信 (7) 微渠道 - 推广渠道管理系统 2 业务逻辑实现
我们可以使用微信的“生成带参数二维码接口”和 “用户管理接口”,来实现生成能标识不同推广渠道的二维码,记录分配给不同推广渠道二维码被扫描的信息.这样就可以统计和分析不同推广渠道的推广效果. 上次介绍了 ...
- 3、IOS开发--iPad之仿制QQ空间 (为HomeViewController添加交互逻辑 并 为导航条内容添加UISegmentedControl)
1. 为bottomMenu添加点击效果 思路描述: 需求: 点击BottomButton的三个item,然后对应响应的是HomeViewController弹出对应的业务 ...
- 使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑
翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑 Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案 ...
- DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...
- Odoo 12 开发手册指南(八)—— 业务逻辑 – 业务流程的支持
在前面的文章中,我们学习了模型层.如何创建应用数据结构以及如何使用 ORM API 来存储查看数据.本文中我们将利用前面所学的模型和记录集知识实现应用中常用的业务逻辑模式. 本文的主要内容有: 以文件 ...
- 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". ...
随机推荐
- mybatis-mysql小优化
原文:http://blog.csdn.net/jinzhencs/article/details/51656548 1.查询某条记录是否存在 <!-- 查询s是否被创建过:Uuid,name, ...
- Google Protocol Buffer安装编译及使用
近期玩了玩谷歌的Protocol Buffer.以下就简介下 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准.眼下已经正在使用的 ...
- Jsp中如何在<c:forEach>标签内获取集合的长度
利用jstl标签functions的prefix属性的length属性值 1.首先在jsp页面导入jstl function标签 <%@ taglib prefix="fn" ...
- python 小技巧(glob,guid,序列化,压缩字符,有序字典,sorted函数,分片)
1.glob模块 glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多.查找文件只用到三个匹配符:”*”, “?”, “[]”.”* ...
- org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root
修改 core-site.xml文件 vim /usr/local/hadoop/etc/hadoop/core-site.xml 增加: <property> <name>h ...
- 【Docker】Docker管理平台 Rancher ---- 你应该学学Rancher是怎么做容器的管理的
Elasticsearch is a Lucene-based search engine developed by the open-source vendor, elastic. With pri ...
- 转:阿里 Weex 思路与实战(web相关)
Weex——关于移动端动态性的思考.实现和未来 2016-04-05 勾股.伊耆 移动开发前线 本文由手机淘宝技术团队赵锦江(勾股).黄金涌(伊耆)等专家创作.手淘作为电商应用,对客户端/前端的动态性 ...
- Ubuntu使用日志2(在Eclipse中搭建C++交叉编译环境)
Release用交叉编译:arm-none-linux-gnueabi-gcc. 搭建步骤: 1).在Project->Properties->C/C++ Build->Settin ...
- ARM指令中的函数调用
1. 重要寄存器 SP 栈指针, 每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式.非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来 ...
- Time.timeScale 时间缩放
static var timeScale : float Description描述 The scale at which the time is passing. This can be used ...