使用 iOS 内购

配置

  1. 在 iTunes Connect 中设置内购:

    Google Play 要求 id 全部为小写字母。为便于进行蓝图设置,最好使 iOS 和安卓 ID 相匹配。

    image alt text

  2. 记录使用的 ID,以及物品是否为消耗品。

  3. 如项目为蓝图项目,则可直接开始。如项目为代码项目,尚未设置项目使用在线生态系统,则需要将以下代码块添加到项目的 Build.cs 文件中:

    if (Target.Platform == UnrealTargetPlatform.IOS)
    {
        PrivateDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "OnlineSubsystem" });
        DynamicallyLoadedModuleNames.Add("OnlineSubsystemIOS");
    }
  4. 编辑 [ProjectName]/Config/IOS/IOSEngine.ini:

    [OnlineSubsystemIOS.Store]
    bSupportsInAppPurchasing=True

读取购买信息

image alt text

可通过 Read In-App Purchase Information 蓝图节点(或相关 C++ 函数调用)读取内购信息。和其他多数在线子系统函数相同,它将 Player Controller(和一个产品标识符阵列)用作输入。下图中的 Make In-App Purchase 接受单个标识符,而 Read 可处理一个信息阵列。该函数将返回一个 In App Purchase 结构体阵列,阵列的每个元素可用于将名称、描述、价格和其他数据显示在 UI 中(或使其用于游戏性逻辑中)。

完成购买

image alt text

可通过 Make an In-App Purchase 蓝图节点(或相关 C++ 函数调用)完成内购。它将 Player Controller (和一个 Product Request 结构体)用作输入。Product Request 即为来自 iTunes Connect 或 Google Play Developer console 的产品标识符(此例中为 match3theme_night),并说明产品是否为消耗品。

Make an In-App Purchase 节点为隐藏状态。因此依赖于购买是否成功的游戏性行为应使用这两个执行引脚。在线服务反馈回应之后,它们才会执行。节点还将返回购买的完成状态(如成功、失败、还原)和详细的 In App Purchase Information 结构体。

此函数存在非隐藏版本(蓝图节点显示时将不带右上角的钟表图案)。该输出执行节点不会等待在线服务反馈回应,因此隐藏函数更为常用。

还原购买

image alt text

可通过 Restore In-App Purchases 蓝图节点(或相关 C++ 函数调用)还原内购。它只接受 Player Controller,返回 Player Controller 相关的所有购买信息的阵列。之后即可将阵列与游戏性逻辑需要的单个(或多个)特殊标识符进行比较。

测试

可自行将版本载入设备(或上传至 iTunes Connect)进行测试。测试购买的用户必须是 iTunes Connect 中的内部或外部测试人员,且必须接受邀请。此外还需要自定义条款。

实用链接