在 Unity SDK 中检查订阅状态
使用 Adapty,追踪订阅状态变得轻而易举。你无需在代码中手动插入产品 ID,只需检查用户是否拥有有效的访问等级,即可轻松确认其订阅状态。
开始检查订阅状态之前(点击展开)
- iOS 请配置 App Store 服务器通知
- Android 请配置实时开发者通知(RTDN)
访问等级与 AdaptyProfile 对象
访问等级是 AdaptyProfile 对象的属性。我们建议在应用启动时获取用户画像,例如在识别用户时,并在发生变更时及时更新。这样一来,你就可以直接使用已有的用户画像对象,而无需反复请求。
若要接收用户画像更新通知,请按照下方监听用户画像更新(包括访问等级)部分的说明,监听用户画像变更。
想看看 Adapty SDK 在移动应用中的实际集成示例吗?欢迎查看我们的示例应用,其中演示了完整的集成流程,包括展示付费墙、完成购买以及其他基本功能。
从服务器获取访问等级
要从服务器获取访问等级,请使用 .GetProfile() 方法:
Adapty.GetProfile((profile, error) => {
if (error != null) {
// handle the error
return;
}
// check the access
});
响应参数:
| 参数 | 描述 |
|---|---|
| Profile | 一个 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 的消息,你需要进行一些额外的配置:
在 SDK 4.0 中,监听器接口遵循 C# 的 I 前缀命名规范:请实现 IAdaptyEventListener 而非 AdaptyEventListener。方法保持不变。详见迁移指南。
// 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 会每隔一分钟定期向服务器发送查询,以检查用户画像是否有任何更新或变更。如果存在修改(例如新的交易记录或其他更新),这些变更将同步到缓存数据中,以确保其与服务器保持一致。