使用安卓内购

配置

  1. 在 Google Play 中设置内购:

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

    image alt text

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

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

    if (Target.Platform == UnrealTargetPlatform.Android)
    {
        PrivateDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "OnlineSubsystem" });
        DynamicallyLoadedModuleNames.Add("OnlineSubsystemGooglePlay");
    }
  4. 找到 Project Settings > Platforms > Android 中的 Advanced APKPackaging 部分。

  5. 为 Extra Permissions 添加一个名为“com.android.vending.BILLING”的元素。

    image alt text

读取购买信息

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 结构体。

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

测试

如要进行安卓测试,需将打包的 APK 文件上传至 Google Play,并设置正确的测试账户。此外还需要您的自定义密钥库。

实用链接