一个iOS应用内购买模块的开发

模块设计

或许以为功能不难,给个人需求就简单几句话。在编码以前我想弄清楚本身开发的模块是怎么样的,该怎么与外界交互。我要找到个工具将这点弄明白,因而想到画UML图。html

UML活动图

UML建模之活动图介绍(Activity Diagram)了解了一下,画活动图比较好,感受这个大概能达到个人目的。因而画了以下两个图,分别表示IAP两个阶段发生的事:git

  • 请求商品信息

请求商品信息

  • 购买商品

购买商品

简单介绍

当时了解到的需求是只用提供Web调用的接口,参照Android的设计,我觉得本模块只用负责逻辑处理部分,不涉及UI展现,因此设计了以上活动图,个人工做主要是App部分。后来需求改了。github

需求改变

  • 本模块负责IAP全部事项,包括UI展现
  • 本模块须要能被原生App调用
  • 考虑到虚拟币商品的固定性,简化购买过程
    • 虚拟币商品比较固定,展现商品时能够拿本地商品信息展现,而不用等到App Store返回商品信息
    • 将请求商品信息与购买商品合并到“肯定支付”过程当中

UML时序图

需求更改后活动图有变化,可初版代码编写后,模块与外界的交互已经比较好理解,我就没再上新图了。我用另一种图肯定了模块内的设计。顺便学习一下时序图工具

IAP时序图

简单介绍

  • 调用者
    • ViewController:这里是App原生调用代码。考虑到易嵌入性,我此次放弃使用代理方式,而选择了Block做为反馈处理。希望代码中没有出现Cycle Retain
  • IAP模块
    • IAPViewController:模块的主要处理类,负责与用户交互,及调用IAPManagerIAPObserver 与App Store进行交互;
    • IAPManager:负责处理请求商品信息;
    • IAPObserver:负责处理购买商品。

IAPManagerIAPObserver只将过程信息打成log,错误信息提示等与用户交互相关的处理经过Block交给IAPViewController学习

Demo

iapTest编码

后续

  • UML图是利用在线工具processon画的,保存什么的仍是很方便,不过功能不及EA等;
  • 设计与代码都在学习中,欢迎一块儿交流。
相关文章
相关标签/搜索