文章目錄
  1. 1. 模块设计
    1. 1.1. UML活动图
      1. 1.1.1. 请求商品信息
      2. 1.1.2. 购买商品
      3. 1.1.3. 简单介绍
    2. 1.2. 需求改变
    3. 1.3. UML时序图
      1. 1.3.1. 简单介绍
  2. 2. Demo
  3. 3. 后续

了解了iOS应用内购买流程后,需要开发一个模块,将其集成到原有项目中。该模块实现虚拟币的应用内购买,能支持原生App调用和Web调用。需求就这样,我用了些功夫捣鼓出来了,将过程纪录一下。

模块设计

或许觉得功能不难,给我的需求就简单几句话。在编码之前我想弄清楚自己开发的模块是怎么样的,该怎么与外界交互。我要找到个工具将这点弄明白,于是想到画UML图。

UML活动图

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

  • 请求商品信息

    请求商品信息

  • 购买商品

    购买商品

简单介绍

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

需求改变

  • 本模块负责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等;
  • 设计与代码都在学习中,欢迎一起交流。
文章目錄
  1. 1. 模块设计
    1. 1.1. UML活动图
      1. 1.1.1. 请求商品信息
      2. 1.1.2. 购买商品
      3. 1.1.3. 简单介绍
    2. 1.2. 需求改变
    3. 1.3. UML时序图
      1. 1.3.1. 简单介绍
  2. 2. Demo
  3. 3. 后续