iOSIAP - woodelf-treetop/rcwiki GitHub Wiki

iOS内购接入

iOS游戏内购接入采用Lua层调用C#层,再由C#层调用原生OC层的方式接入

1.OC层代码

OC层代码位于Unity工程中的Plugins/iOS文件夹中,包含4个文件:
IAPInterface.h
IAPInterface.m
IAPManager.h
IAPManager.m

IAPInterface提供了一些C函数的接口暴露给Unity层以供C#去调用,作为OC层与C#层的桥梁 IAPManager提供了内购的基本方法,负责调用Apple的内购接口

2.C#层代码

C#层代码为IAPManager.cs脚本 脚本中的四个类

1.IAPManager

继承于Monobehaviour,挂载于游戏主场景中的IOSMain游戏物体上。
该类提供与OC层代码交互的方法。
提供了内购商品数据请求、内购商品购买、购买成功与失败回调等相关接口。
维护了两个IAPPaymentDataCache订单数据类,mPurchasingDataCache对象为支付中的订单数据集合,mPurchasedDataCache为支付完成的订单数据集合。 发起内购商品购买后,会新建当前订单的IAPPaymentData对象,并存储于mPurchasingDataCache支付中数据缓存中。 苹果支付完成后,该对单数据会从mPurchasingDataCache中移除,并存入mPurchasedDataCache支付完成数据缓存中。 支付完成的订单会请求游戏服务器进行内购商品的发货,发货完成则将该订单从mPurchasedDataCache中移除,完成一次完整的内购流程。

2.IAPProductData

苹果内购商品数据的封装,包括商品ID、名称、描述、符号、价格等基本信息

3.IAPPaymentData

购买订单的数据封装,包括游戏订单、内购商品id、玩家Id、服务器Id、收据、TransactionId等信息

4.IAPPaymentDataCache

对IAPPaymentData订单对象的数据管理类,提供订单数据序列化存储及反序列化读取的功能,防止出现订单处理不及时发生掉单的情况

⚠️ **GitHub.com Fallback** ⚠️