在 iOS SDK 中检查订阅状态

要决定用户是否可以访问付费内容或查看付费墙,您需要检查用户画像中的访问等级

本文将介绍如何访问用户画像状态,以决定向用户展示什么内容——是显示付费墙还是授予付费功能的访问权限。

获取订阅状态

当您需要决定是向用户显示付费墙还是付费内容时,您需要检查其用户画像中的访问等级。您有两种选择:

  • 如果需要立即获取最新的用户画像数据(例如应用启动时)或想要强制更新,请调用 getProfile
  • 设置自动用户画像更新,以保留一份本地副本,当订阅状态发生变化时自动刷新。

默认情况下,premium 访问等级在 Adapty 中已经存在。如果您不需要设置多个访问等级,直接使用 premium 即可。

获取用户画像

获取订阅状态最简单的方法是使用 getProfile 方法访问用户画像:

监听订阅更新

如果您希望在应用中自动接收用户画像更新:

  1. 在您选择的类型中遵循 AdaptyDelegate 协议并实现 didLoadLatestProfile 方法——每当用户的订阅状态发生变化时,Adapty 会自动调用此方法。在下面的示例中,我们使用 SubscriptionManager 类型来协助处理订阅工作流和用户画像。该类型可以作为依赖项注入,或在 UIKit 应用中设置为单例,也可以从应用主结构体添加到 SwiftUI 环境中。
  2. 当此方法被调用时,存储更新后的用户画像数据,这样您就可以在整个应用中使用它,而无需进行额外的网络请求。
class SubscriptionManager: AdaptyDelegate {

    nonisolated func didLoadLatestProfile(_ profile: AdaptyProfile) {
        let hasAccess = profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false
        // Update UI, unlock content, etc.
    }
}

// Set delegate after Adapty activation
Adapty.delegate = subscriptionManager

Adapty 会在应用启动时自动调用 didLoadLatestProfile,即使设备处于离线状态也能提供缓存的订阅数据。

将用户画像与付费墙逻辑连接

当您需要立即决定是显示付费墙还是授予用户付费功能访问权限时,可以直接检查用户的用户画像。这种方式适用于以下场景:应用启动时、进入付费专区时,或在显示特定内容之前。

后续步骤

现在您已了解如何追踪订阅状态,接下来请了解如何使用用户画像,以确保其与您现有的身份验证系统及付费访问共享权限保持一致。

如果您没有自己的身份验证系统,这完全没有问题,Adapty 会为您管理用户,但您仍然可以阅读该指南,了解 Adapty 如何处理匿名用户。