在 Unity SDK 中检查订阅状态

借助 Adapty,追踪订阅状态变得轻而易举。您无需在代码中手动插入产品 ID,只需检查用户是否拥有有效的访问等级,即可确认其订阅状态。

开始检查订阅状态之前(点击展开)

访问等级与 AdaptyProfile 对象

访问等级是 AdaptyProfile 对象的属性。我们建议在应用启动时(例如识别用户时)获取用户画像,并在发生变更时及时更新。这样,您就可以直接使用已获取的用户画像对象,而无需反复请求。

如需接收用户画像更新通知,请按照下方监听订阅状态更新章节的说明监听用户画像变更事件。

想了解 Adapty SDK 如何集成到移动应用中的真实示例?请查看我们的示例应用,其中展示了完整的配置过程,包括显示付费墙、完成购买以及其他基本功能。

从服务器获取访问等级

使用 .GetProfile() 方法从服务器获取访问等级:

Adapty.GetProfile((profile, error) => {
  if (error != null) {
    // handle the error
    return;
  }

// check the access
});

响应参数:

参数描述
Profile

AdaptyProfile 对象。通常,您只需检查用户画像的访问等级状态,即可判断用户是否拥有应用的高级权限。

.getProfile 方法始终会尝试请求 API,因此可提供最新的结果。如果由于某些原因(如无网络连接)Adapty SDK 无法从服务器获取信息,则会返回缓存中的数据。值得注意的是,Adapty SDK 会定期更新 AdaptyProfile 缓存,以尽可能保持信息的最新状态。

.getProfile() 方法会返回用户画像,您可以从中获取访问等级状态。每个应用可以设置多个访问等级。例如,如果您有一个新闻应用,并针对不同主题独立销售订阅,可以创建”sports”和”science”等访问等级。但大多数情况下,您只需要一个访问等级,此时直接使用默认的”premium”访问等级即可。

以下是检查默认”premium”访问等级的示例:

Adapty.GetProfile((profile, error) => {
  if (error != null) {
    // handle the error
    return;
  }

// "premium" is an identifier of default access level
var accessLevel = profile.AccessLevels["premium"];
if (accessLevel != null && accessLevel.IsActive) {
// grant access to premium features
}
});

监听订阅状态更新

每当用户的订阅发生变化时,Adapty 都会触发相应事件。

要接收来自 Adapty 的消息,您需要进行一些额外配置:

// Extend `AdaptyEventListener ` with `OnLoadLatestProfile ` method:
public class AdaptyListener : MonoBehaviour, AdaptyEventListener {
  public void OnLoadLatestProfile(AdaptyProfile profile) {
    // handle any changes to subscription state
  }
}

Adapty 也会在应用启动时触发事件,此时将传递缓存的订阅状态。

订阅状态缓存

Adapty SDK 中实现的缓存会存储用户画像的订阅状态。这意味着即使服务器不可用,也可以访问缓存数据以获取用户画像的订阅状态信息。

但需要注意的是,无法直接从缓存中请求数据。SDK 会每分钟定期向服务器查询,以检查用户画像是否有任何更新或变更。如果存在任何修改(如新的交易记录或其他更新),这些变更将同步至缓存数据,以确保其与服务器保持一致。