文档

配置 Codeless IAP 按钮

设置和使用 Codeless IAP 按钮和 IAP 监听器可在不编写复杂代码的情况下启用应用内购和恢复购买。
阅读时间5 分钟最后更新于 3 个月前

Codeless IAP 按钮可以轻松设置应用内购和恢复按钮,只需编写最少的脚本。使用 IAP 按钮可将购买和恢复功能直接添加到 UI 按钮。此方法为用户提供了在应用中购买或恢复商品的简单方法。

使用 OnProductFetch 更新商品详细信息

Unity IAP 从应用商店检索产品信息时触发
OnProductFetched
事件。确保使用此事件更新 UI 中与商品相关的所有文本,例如标题、描述和价格。
OnProductFetched
脚本示例:
提示
向
IAPButton
添加类似于以下脚本的脚本,以便将不同视图链接到此事件。
public class IAPButtonView : MonoBehaviour{ [SerializeField] TMP_Text title; [SerializeField] TMP_Text price; public void OnProductFetched(Product product) { if (title != null) { title.text = product.metadata.localizedTitle; } if (price != null) { price.text = product.metadata.localizedPriceString; } }}

IAP 监听器

Codeless IAP 通常会将成功和失败的购买事件发送到场景中激活的 IAP 按钮组件。但是,在某些情况下,使用 IAP 按钮不切实际。例如,如果购买履行中断且未完成,Unity IAP 会在下次初始化时再次尝试处理购买(通常在应用程序启动后立即处理,此时 IAP 按钮可能尚未初始化)。在这些情况下,可以使用 IAP Listener 组件。IAP 监听器会接收 IAP 按钮无法处理的任何购买事件,从而确保所有购买都得到正确处理。将 IAP 监听器添加到场景中可自动处理这些事件。
注意
要避免重复响应,请确保 IAP 监听器处理的事件不会也由同一商品的 IAP 按钮订阅。
要添加 IAP 监听器,请执行以下步骤:
  1. 在 Unity Editor 中,选择 Services > In-App Purchasing > Create IAP Listener。
  2. 请遵循将购买履行脚本编写为游戏对象组件的步骤。请参阅购买履行以了解更多信息。
  3. 从 Hierarchy 列表中选择 IAP Listener,然后在 Inspector 中找到其 IAP Listener 脚本组件。然后选择 + 为 On Purchases Fetch (Orders) 和 On Order Pending (PendingOrder) 添加函数。
    • On Order Pending 处理所有新交易,并针对单个
      PendingOrder
      交易调用。
    • On Purchases Fetch 处理所有现有交易,并使用包含所有激活的 Pending、Confirmed 和 Deferred 交易的
      Orders
      对象进行调用。
  4. 将带有购买履行脚本的游戏对象拖到组件的 Inspector 中的事件字段上,然后从下拉菜单中选择您的函数。

Restore 按钮

某些应用商店(包括 Apple App Store)要求应用程序具有 Restore 按钮。Codeless IAP 提供了一种在应用程序中实现恢复按钮的简单方法。
要添加 Restore 按钮,请执行以下步骤:
  1. 将 IAP 按钮添加到场景中(Services > In-App Purchasing > Create IAP Button)。
  2. 选择 IAP Button 后,在 Inspector 中找到其 IAP Button 组件。
    1. 在 Button Type 下拉菜单中,选择 Restore。Inspector 窗口更新为仅显示与 Restore 按钮相关的字段。
  3. 可选:选择加号 (+) 按钮可将脚本添加到
    On Transactions Restored (Boolean, String)
    。
    1. 将带有恢复交易脚本的游戏对象拖到组件的 Inspector 中的事件字段上,然后从下拉选单中选择 函数。
public void OnTransactionsRestored(bool success, string? error){ Debug.Log($"TransactionsRestored: {success} {error}");}
用户在运行时选择此按钮时,会调用当前商店的购买恢复 API。在 Apple App Store 上,这会触发 Apple 的内置还原或同步流程。 在 Google Play 上,恢复是 IAP 初始化的一部分。在运行时进行的其他恢复调用很少会产生结果。
Unity IAP 始终在 Restore IAP 按钮上调用
OnTransactionsRestored
方法,并在恢复失败时显示结果和相关错误消息。
成功恢复交易后,Unity IAP 会在链接到商品的 IAP 按钮上调用
OnPurchaseFetched
回调,或在 IAP Listener 组件上调用
OnPurchasesFetched
回调。
public void OnOrderPending(PendingOrder order){ foreach(var cartItem in order.CartOrdered.Items()) { var product = cartItem.Product; // grant purchase... }}public void OnPurchasesFetched(Orders existingOrders){ foreach(在 existingOrders.ConfirmedOrders 中更改顺序) { foreach(var cartItem in order.CartOrdered.Items()) { var product = cartItem.Product; // grant access... } }}