iOSIAP - woodelf-treetop/rcwiki GitHub Wiki
iOS游戏内购接入采用Lua层调用C#层,再由C#层调用原生OC层的方式接入
OC层代码位于Unity工程中的Plugins/iOS文件夹中,包含4个文件:
IAPInterface.h
IAPInterface.m
IAPManager.h
IAPManager.m

IAPInterface提供了一些C函数的接口暴露给Unity层以供C#去调用,作为OC层与C#层的桥梁 IAPManager提供了内购的基本方法,负责调用Apple的内购接口
C#层代码为IAPManager.cs脚本 脚本中的四个类
继承于Monobehaviour,挂载于游戏主场景中的IOSMain游戏物体上。
该类提供与OC层代码交互的方法。
提供了内购商品数据请求、内购商品购买、购买成功与失败回调等相关接口。
维护了两个IAPPaymentDataCache订单数据类,mPurchasingDataCache对象为支付中的订单数据集合,mPurchasedDataCache为支付完成的订单数据集合。
发起内购商品购买后,会新建当前订单的IAPPaymentData对象,并存储于mPurchasingDataCache支付中数据缓存中。
苹果支付完成后,该对单数据会从mPurchasingDataCache中移除,并存入mPurchasedDataCache支付完成数据缓存中。
支付完成的订单会请求游戏服务器进行内购商品的发货,发货完成则将该订单从mPurchasedDataCache中移除,完成一次完整的内购流程。
苹果内购商品数据的封装,包括商品ID、名称、描述、符号、价格等基本信息
购买订单的数据封装,包括游戏订单、内购商品id、玩家Id、服务器Id、收据、TransactionId等信息
对IAPPaymentData订单对象的数据管理类,提供订单数据序列化存储及反序列化读取的功能,防止出现订单处理不及时发生掉单的情况