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开发---业务逻辑的更多相关文章

  1. MVC5 网站开发之四 业务逻辑层的架构和基本功能

    业务逻辑层在Ninesky.Core中实现,主要功能封装一些方法通过调用数据存储层,向界面层提供服务.   目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...

  2. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑

    Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案如下所示: 下面我们讨论整个应用的结构,根据应用中不同组件的逻辑相关性,分离到不同的层中,层与层之间的通讯通过或者不通过限制.分层属于架构 ...

  3. ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑

    上次搭建好了项目框架,但还是觉得不太对劲,后来才想起来没有对开发目标进行定位,这个小demo虽然不用做需求分析,但是要实现什么效果还得明确.后来想了一下就做个最简单的网站,目标定为小公司进行展示用的网 ...

  4. 用c#开发微信 (7) 微渠道 - 推广渠道管理系统 2 业务逻辑实现

    我们可以使用微信的“生成带参数二维码接口”和 “用户管理接口”,来实现生成能标识不同推广渠道的二维码,记录分配给不同推广渠道二维码被扫描的信息.这样就可以统计和分析不同推广渠道的推广效果. 上次介绍了 ...

  5. 3、IOS开发--iPad之仿制QQ空间 (为HomeViewController添加交互逻辑 并 为导航条内容添加UISegmentedControl)

    1. 为bottomMenu添加点击效果 思路描述:        需求:        点击BottomButton的三个item,然后对应响应的是HomeViewController弹出对应的业务 ...

  6. 使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑

    翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑 Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案 ...

  7. DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)

    这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...

  8. Odoo 12 开发手册指南(八)—— 业务逻辑 – 业务流程的支持

    在前面的文章中,我们学习了模型层.如何创建应用数据结构以及如何使用 ORM API 来存储查看数据.本文中我们将利用前面所学的模型和记录集知识实现应用中常用的业务逻辑模式. 本文的主要内容有: 以文件 ...

  9. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

    本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". ...

随机推荐

  1. DevExpress.XtraTreeList

    1. DevExpress.XtraTreeList控件         将其简称为tree,tree其实就是一个树表控件,他像树一样包含具有父子关系的若干节点,同时每个节点又是一个带有多个字段的记录 ...

  2. 单元测试方法属性(Unit Test Method Attribute)

    Additional test attributes(可以在测试方法上使用的属性)As you have seen, the unit-testing subsystem within Visual ...

  3. DNX 概览

    来源https://docs.asp.net/en/latest/dnx/overview.html .NET Execution Environment是什么 .NET Execution Envi ...

  4. memcache学习资料

    memcached是国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能.官方站点 http://memcached.org/memcac ...

  5. python常见的编程错误

    常见的编程错误 2.1 试图访问一个未赋值的变量,会产生运行时错误. 2.2 ==,!=, >=和<=这几个运算符的两个符号之间出现空格,会造成语法错误. 2.3 !=,<>, ...

  6. OpenGL投影矩阵【转】

    OpenGL投影矩阵 概述 透视投影 正交投影 概述 计算机显示器是一个2D平面.OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上.GL_PROJECTION矩阵用于该投影变换.首先,它 ...

  7. shell通配符、命令代换、引号

    1.通配符 (1)* :匹配多个任意字符 (2)? :匹配一个任意字符 (3)[若干字符] :匹配方括号中任意一个字符的一次出现 2.命令代换:反引号``或者$() 例1:vim test_th.sh ...

  8. Effective C++--经验条款

    高效C++ --模板与泛型编程 在C++中模板体现的是编译期多态,virtual体现的是执行期多态. 关于typename的双重含义: 在声明template參数时,不论使用keywordclass或 ...

  9. 详细解析Spring事务的配置和OpenSessionInview的作用

    1.事务的特性   原子性:事务中的操作是不可分割的一部分   一致性:要么同时成功,要么同时失败(事务执行前后数据保持一致)   隔离性:并发互不干扰     持久性:事务一旦被提交,它就是一条持久 ...

  10. Centos6.6 以rpm方式安装mysql5.6

    一.查看系统中有没有mysql的源 yum repolist all | grep mysql 二.配置源 1.配置源参考mysql官方给出的源配置,https://dev.mysql.com/doc ...