You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Glassfy订阅者识别异常:已订阅仍显示免费计划

问题解决:订阅后重启应用显示免费计划

核心原因

应用启动时未主动同步用户的订阅状态,导致GlassfyProvider中的isPremium未被正确更新为已订阅状态。

解决方案

1. 启动时同步订阅状态

在页面初始化阶段调用Glassfy同步接口,拉取最新订阅状态并更新Provider:

@override
void initState() {
  super.initState();
  _syncSubscriptionStatus();
}

Future<void> _syncSubscriptionStatus() async {
  try {
    // 同步应用商店购买记录,确保Glassfy获取最新状态
    await Glassfy.syncPurchases();
    
    // 获取用户当前的权限列表
    final entitlements = await Glassfy.entitlements();
    
    // 根据Glassfy控制台配置的权限ID判断是否为付费用户
    final isPremium = entitlements.any(
      (ent) => ent.identifier == "你的付费权限ID" // 替换为实际权限ID
    );
    
    // 更新Provider状态
    context.read<GlassfyProvider>().updatePremiumStatus(isPremium);
  } catch (e) {
    debugPrint("同步订阅状态失败: $e");
  }
}

2. 完善GlassfyProvider实现

确保Provider能正确更新状态并通知UI刷新:

class GlassfyProvider extends ChangeNotifier {
  bool _isPremium = false;

  bool get isPremium => _isPremium;

  void updatePremiumStatus(bool newStatus) {
    if (_isPremium != newStatus) {
      _isPremium = newStatus;
      notifyListeners(); // 触发UI重新渲染
    }
  }
}

3. 验证权限配置

确认Glassfy控制台中,你的订阅产品已关联正确的权限(Entitlement),且代码中使用的权限ID与控制台配置一致。

额外提示

  • 跨设备恢复订阅时,同样需要调用syncPurchases同步应用商店记录
  • 可在用户点击「Plans」按钮时再次触发同步,确保状态实时更新

内容的提问来源于stack exchange,提问作者Burak Özkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:52:20