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

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

ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæœ‰æ–™ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ã‹ã€ã¾ãŸã¯ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã‚’表示ã™ã‚‹ã‹ã‚’決ã‚ã‚‹ã«ã¯ã€ãƒ—ロファイルã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã‚’確èªã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

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

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

ペイウォールã¾ãŸã¯æœ‰æ–™ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã™ã‚‹ã‹ã©ã†ã‹ã‚’判断ã™ã‚‹éš›ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ—ロファイルã«ã‚るアクセスレベルを確èªã—ã¾ã™ã€‚方法ã¯2ã¤ã‚りã¾ã™ï¼š

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

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

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

try {
  const profile = await adapty.getProfile();
} catch (error) {
  // handle the error
}

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

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

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

Adapty ã¯ã€ã‚¢ãƒ—リã®èµ·å‹•時ã«è‡ªå‹•的㫠onLatestProfileLoad イベントリスナーを呼ã³å‡ºã—ã€ãƒ‡ãƒã‚¤ã‚¹ãŒã‚ªãƒ•ラインã®å ´åˆã§ã‚‚キャッシュã•れãŸã‚µãƒ–スクリプションデータをæä¾›ã—ã¾ã™ã€‚

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

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


const checkAccessLevel = async () => {
  try {
    const profile = await adapty.getProfile();
    return profile?.accessLevels?.['YOUR_ACCESS_LEVEL']?.isActive === true;
  } catch (error) {
    console.warn('Error checking access level:', error);
    return false; // Show paywall if access check fails
  }
};

const getAccessLevel = (profile: AdaptyProfile) => {
  return profile.accessLevels?.['YOUR_ACCESS_LEVEL'];
};

const initializePaywall = async () => {
  try {
    await loadPaywall();
    
    const hasAccess = await checkAccessLevel();
    if (!hasAccess) {
      // Show paywall if no access
    }
  } catch (error) {
    console.warn('Error initializing paywall:', error);
  }
};

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

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

ÿÿÿÿ