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

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

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

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

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

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

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

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

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

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

// check the access
});

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

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

  1. AdaptyEventListener を継承ã—㦠OnLoadLatestProfile メソッドを実装ã—ã¾ã™ã€‚ユーザーã®ã‚µãƒ–スクリプションステータスãŒå¤‰ã‚ã‚‹ã¨ã€AdaptyãŒè‡ªå‹•çš„ã«ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¾ã™ã€‚
  2. ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã³å‡ºã•れãŸã¨ãã«æ›´æ–°ã•れãŸãƒ—ロファイルデータをä¿å­˜ã—ã¦ãŠãã¨ã€è¿½åŠ ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆãªã—ã«ã‚¢ãƒ—リ全体ã§åˆ©ç”¨ã§ãã¾ã™ã€‚
public class SubscriptionManager : MonoBehaviour, AdaptyEventListener {
    private AdaptyProfile currentProfile;
    
    void Start() {
        // Register this object as an Adapty event listener
        Adapty.SetEventListener(this);
    }
    
    // Store the profile when it updates
    public void OnLoadLatestProfile(AdaptyProfile profile) {
        currentProfile = profile;
        // Update UI, unlock content, etc.
    }
    
    public void OnInstallationDetailsSuccess(AdaptyInstallationDetails details) { }
    public void OnInstallationDetailsFail(AdaptyError error) { }
    
    // Use stored profile instead of calling getProfile()
    public bool HasAccess() {
        if (currentProfile?.AccessLevels != null && 
            currentProfile.AccessLevels.ContainsKey("premium")) {
            return currentProfile.AccessLevels["premium"].IsActive;
        }
        return false;
    }
}

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

プロファイルã¨ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ãƒ­ã‚¸ãƒƒã‚¯ã‚’連æºã•ã›ã‚‹

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

private void CheckAccessLevel()
{
    Adapty.GetProfile((profile, error) => {
        if (error != null) {
            Debug.LogError("Error checking access level: " + error.Message);
            // Show paywall if access check fails
            return;
        }
        
        var accessLevel = profile.AccessLevels["YOUR_ACCESS_LEVEL"];
        if (accessLevel == null || !accessLevel.IsActive) {
            // Show paywall if no access
        }
    });
}

private void InitializePaywall()
{
    LoadPaywall();
    CheckAccessLevel();
}

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

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

ÿÿÿÿ