在 Unity SDK 中响应按钮操作

如果您正在使用 Adapty 付费墙编辑工具构建付费墙,正确设置按钮至关重要:

  1. 在付费墙编辑工具中添加按钮,并为其分配预设操作或创建自定义操作 ID。
  2. 在您的应用代码中编写处理每个已分配操作的逻辑。

本指南介绍如何在代码中处理自定义操作和预设操作。

只有购买和恢复操作会被自动处理。 其他所有按钮操作(例如关闭付费墙或打开链接)都需要在应用代码中实现相应的响应逻辑。

关闭付费墙

要添加一个可关闭付费墙的按钮:

  1. 在付费墙编辑工具中,添加一个按钮并为其分配 Close 操作。
  2. 在您的应用代码中,为 close 操作实现一个处理程序,用于关闭付费墙。
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view, 
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.Close:
            view.Dismiss(null);
            break;
        default:
            // handle other events
            break;
    }
}

从付费墙打开 URL

如果您想添加一组链接(例如使用条款和购买恢复),可以在付费墙编辑工具中添加 Link 元素,并以与带有 Open URL 操作的按钮相同的方式进行处理。

要添加一个从付费墙打开链接的按钮(例如使用条款隐私政策):

  1. 在付费墙编辑工具中,添加一个按钮,为其分配 Open URL 操作,并输入您想打开的 URL。
  2. 在您的应用代码中,为 openUrl 操作实现一个处理程序,用于在浏览器中打开收到的 URL。
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view,
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.OpenUrl:
            var urlString = action.Value;
            if(!string.IsNullOrWhiteSpace(urlString)) {
                Application.OpenURL(urlString);
            }
            break;
        default:
            // handle other events
            break;
    }
}

登录应用

要添加一个让用户登录应用的按钮:

  1. 在付费墙编辑工具中,添加一个按钮,并为其分配 ID 为 loginCustom 操作。
  2. 在您的应用代码中,为 login 自定义操作实现一个处理程序,用于识别您的用户身份。
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view,
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.Custom:
            if (action.Value == "login") {
                // Navigate to login scene
                SceneManager.LoadScene("LoginScene");
            }
            break;
        default:
            // handle other events
            break;
    }
}

处理自定义操作

要添加一个处理其他任意操作的按钮:

  1. 在付费墙编辑工具中,添加一个按钮,为其分配 Custom 操作,并设置一个 ID。
  2. 在您的应用代码中,为您创建的操作 ID 实现相应的处理程序。

例如,如果您有另一套订阅优惠或一次性购买,可以添加一个按钮来显示另一个付费墙:

public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view,
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.Custom:
            if (action.Value == "openNewPaywall") {
                // Display another paywall
                ShowAlternativePaywall();
            }
            break;
        default:
            // handle other events
            break;
    }
}

private void ShowAlternativePaywall() {
    // Implement your logic to show alternative paywall
}