ÿÿ サブスクリプションステータスã®ç¢ºèª | Adapty ドキュメント

Flutter SDKã§ã‚µãƒ–スクリプションステータスを確èªã™ã‚‹

有料コンテンツã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚„ペイウォールã®è¡¨ç¤ºã‚’判断ã™ã‚‹ã«ã¯ã€ãƒ—ロファイルã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã‚’確èªã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

ã“ã®è¨˜äº‹ã§ã¯ã€ãƒ—ロファイルã®çŠ¶æ…‹ã‚’å–å¾—ã—ã¦ã€ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã‚’表示ã™ã‚‹ã‹æœ‰æ–™æ©Ÿèƒ½ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹ã‹ã‚’判断ã™ã‚‹æ–¹æ³•を説明ã—ã¾ã™ã€‚

サブスクリプションステータスをå–å¾—ã™ã‚‹

ユーザーã«ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã‚’表示ã™ã‚‹ã‹æœ‰æ–™ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を見ã›ã‚‹ã‹ã‚’判断ã™ã‚‹éš›ã«ã¯ã€ãƒ—ロファイルã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã‚’確èªã—ã¾ã™ã€‚方法ã¯2ã¤ã‚りã¾ã™ã€‚

  • アプリ起動時ãªã©ã€æœ€æ–°ã®ãƒ—ロファイルデータをã™ãã«å–å¾—ã—ãŸã„å ´åˆã‚„強制更新ã—ãŸã„å ´åˆã¯ getProfile を呼ã³å‡ºã™ã€‚
  • プロファイルã®è‡ªå‹•更新を設定ã—ã¦ã€ã‚µãƒ–スクリプションステータスãŒå¤‰ã‚ã‚‹ãŸã³ã«ãƒ­ãƒ¼ã‚«ãƒ«ã‚³ãƒ”ãƒ¼ã‚’è‡ªå‹•çš„ã«æ›´æ–°ã™ã‚‹ã€‚

プロファイルをå–å¾—ã™ã‚‹

サブスクリプションステータスをå–å¾—ã™ã‚‹æœ€ã‚‚ã‚·ãƒ³ãƒ—ãƒ«ãªæ–¹æ³•ã¯ã€getProfile メソッドを使ã£ã¦ãƒ—ロファイルã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ã§ã™ã€‚

try {
  final profile = await Adapty().getProfile();
  // check the access
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}

ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æ›´æ–°ã‚’å—ã‘å–ã‚‹

アプリã§ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›´æ–°ã‚’自動的ã«å—ã‘å–ã‚‹ã«ã¯:

  1. Adapty().didUpdateProfileStream.listen() を使用ã—ã¦ãƒ—ロファイルã®å¤‰æ›´ã‚’監視ã—ã¾ã™ã€‚ユーザーã®ã‚µãƒ–スクリプションステータスãŒå¤‰ã‚ã‚‹ã¨ã€Adapty ã¯è‡ªå‹•çš„ã«ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¾ã™ã€‚
  2. ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã³å‡ºã•れãŸã¨ãã«æ›´æ–°ã•れãŸãƒ—ロファイルデータをä¿å­˜ã—ã¦ãŠãã¨ã€è¿½åŠ ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’行ã‚ãšã«ã‚¢ãƒ—リ全体ã§åˆ©ç”¨ã§ãã¾ã™ã€‚
class SubscriptionManager {
  AdaptyProfile? _currentProfile;
  
  SubscriptionManager() {
    // Listen for profile updates
    Adapty().didUpdateProfileStream.listen((profile) {
      _currentProfile = profile;
      // Update UI, unlock content, etc.
    });
  }
  
  // Use stored profile instead of calling getProfile()
  bool hasAccess() {
    return _currentProfile?.accessLevels['premium']?.isActive ?? false;
  }
}

Adapty ã¯ã‚¢ãƒ—リ起動時ã«ãƒ—ロファイル更新ストリームリスナーを自動的ã«å‘¼ã³å‡ºã—ã€ãƒ‡ãƒã‚¤ã‚¹ãŒã‚ªãƒ•ラインã§ã‚‚キャッシュã•れãŸã‚µãƒ–スクリプションデータをæä¾›ã—ã¾ã™ã€‚

プロファイルã¨ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ãƒ­ã‚¸ãƒƒã‚¯ã®é€£æº

ペイウォールã®è¡¨ç¤ºã‚„有料機能ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ä»˜ä¸Žã‚’ã™ãã«åˆ¤æ–­ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ—ロファイルを直接確èªã§ãã¾ã™ã€‚ã“ã®æ–¹æ³•ã¯ã€ã‚¢ãƒ—リã®èµ·å‹•時ã€ãƒ—レミアムセクションã¸ã®å…¥å ´æ™‚ã€ç‰¹å®šã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã™ã‚‹å‰ãªã©ã€ã•ã¾ã–ã¾ãªã‚·ãƒŠãƒªã‚ªã§å½¹ç«‹ã¡ã¾ã™ã€‚

Future<bool> _checkAccessLevel() async {
  try {
    final profile = await Adapty().getProfile();
    return profile.accessLevels['YOUR_ACCESS_LEVEL']?.isActive ?? false;
  } catch (e) {
    print('Error checking access level: $e');
    return false; // Show paywall if access check fails
  }
}

Future<void> _initializePaywall() async {
  await _loadPaywall();
  
  final hasAccess = await _checkAccessLevel();
  if (!hasAccess) {
    // Show paywall if no access
  }
}

次ã®ã‚¹ãƒ†ãƒƒãƒ—

サブスクリプションステータスã®è¿½è·¡æ–¹æ³•ãŒã‚ã‹ã£ãŸã®ã§ã€æ¬¡ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã®æ“作ã«ã¤ã„ã¦å­¦ã³ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè³¼å…¥æ¸ˆã¿ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ã—ã¾ã—ょã†ã€‚

ÿÿÿÿ