ÿÿ ペイウォールã®ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚º | Unity SDK | Adapty ドキュメント

Unity SDKã§ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã¨ãƒ­ã‚±ãƒ¼ãƒ«ã‚³ãƒ¼ãƒ‰ã‚’使用ã™ã‚‹

ãªãœã“れãŒé‡è¦ãªã®ã‹

ロケールコードãŒé–¢ä¿‚ã™ã‚‹ã‚·ãƒŠãƒªã‚ªã¯ã„ãã¤ã‹ã‚りã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚¢ãƒ—リã®ç¾åœ¨ã®ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã«åˆã£ãŸæ­£ã—ã„ペイウォールをå–å¾—ã—よã†ã¨ã™ã‚‹å ´åˆãªã©ã§ã™ã€‚

ロケールコードã¯è¤‡é›‘ã§ã€ãƒ—ラットフォームã«ã‚ˆã£ã¦ç•°ãªã‚‹ãŸã‚ã€Adaptyã§ã¯ã‚µãƒãƒ¼ãƒˆã™ã‚‹ã™ã¹ã¦ã®ãƒ—ラットフォームã«å¯¾ã—ã¦ç‹¬è‡ªã®æ¨™æº–を採用ã—ã¦ã„ã¾ã™ã€‚ãŸã ã—ã€ã“れらã®ã‚³ãƒ¼ãƒ‰ãŒè¤‡é›‘ã§ã‚ã‚‹ãŒã‚†ãˆã«ã€ã‚µãƒ¼ãƒãƒ¼ã«ä½•ã‚’é€ä¿¡ã—ã¦æ­£ã—ã„ローカライゼーションをå–å¾—ã™ã‚‹ã®ã‹ã€ãã—ã¦ãã®å¾Œä½•ãŒèµ·ã“ã‚‹ã®ã‹ã‚’正確ã«ç†è§£ã™ã‚‹ã“ã¨ãŒéžå¸¸ã«é‡è¦ã§ã™ã€‚ãã†ã™ã‚Œã°ã€å¸¸ã«æœŸå¾…通りã®çµæžœã‚’å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

Adaptyã®ãƒ­ã‚±ãƒ¼ãƒ«ã‚³ãƒ¼ãƒ‰I標準

ロケールコードã«ã¤ã„ã¦ã€Adaptyã¯ã‚ãšã‹ã«ä¿®æ­£ã•れãŸBCP 47標準を使用ã—ã¦ã„ã¾ã™ã€‚å„コードã¯å°æ–‡å­—ã®ã‚µãƒ–ã‚¿ã‚°ã§æ§‹æˆã•れã€ãƒã‚¤ãƒ•ンã§åŒºåˆ‡ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚例:en(英語)ã€pt-br(ãƒãƒ«ãƒˆã‚¬ãƒ«èªžï¼ˆãƒ–ラジル))ã€zh(簡体字中国語)ã€zh-hant(ç¹ä½“字中国語)。

ロケールコードã®ãƒžãƒƒãƒãƒ³ã‚°

AdaptyãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå´ã®SDKã‹ã‚‰ãƒ­ã‚±ãƒ¼ãƒ«ã‚³ãƒ¼ãƒ‰ä»˜ãã®å‘¼ã³å‡ºã—ã‚’å—ã‘å–りã€ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã®å¯¾å¿œã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã‚’検索ã™ã‚‹éš›ã€ä»¥ä¸‹ã®å‡¦ç†ãŒè¡Œã‚れã¾ã™ï¼š

  1. å—ä¿¡ã—ãŸãƒ­ã‚±ãƒ¼ãƒ«æ–‡å­—列ãŒå°æ–‡å­—ã«å¤‰æ›ã•れã€ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ï¼ˆ_)ãŒã™ã¹ã¦ãƒã‚¤ãƒ•ン(-)ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™
  2. 完全ã«ä¸€è‡´ã™ã‚‹ãƒ­ã‚±ãƒ¼ãƒ«ã‚³ãƒ¼ãƒ‰ã‚’æŒã¤ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã‚’検索ã—ã¾ã™
  3. 一致ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã€æœ€åˆã®ãƒã‚¤ãƒ•ンよりå‰ã®éƒ¨åˆ†æ–‡å­—列(pt-brãªã‚‰pt)をå–り出ã—ã¦ã€ä¸€è‡´ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã‚’検索ã—ã¾ã™
  4. ãれã§ã‚‚一致ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã€ãƒ‡ãƒ•ォルトã®enローカライゼーションを返ã—ã¾ã™

ã“れã«ã‚ˆã‚Šã€'pt_BR'ã‚’é€ä¿¡ã—ãŸiOSデãƒã‚¤ã‚¹ã€pt-BRã‚’é€ä¿¡ã—ãŸAndroidデãƒã‚¤ã‚¹ã€pt-brã‚’é€ä¿¡ã—ãŸåˆ¥ã®ãƒ‡ãƒã‚¤ã‚¹ã¯ã™ã¹ã¦åŒã˜çµæžœã‚’å—ã‘å–りã¾ã™ã€‚

ローカライゼーションã«ã¤ã„ã¦æ¤œè¨Žã—ã¦ã„ã‚‹ãªã‚‰ã€ã™ã§ã«ãƒ—ロジェクトã§ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚ºã•ã‚ŒãŸæ–‡å­—列ファイルを扱ã£ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。ãã®å ´åˆã€å„ローカライゼーションã«å¯¾å¿œã™ã‚‹ãƒ•ァイルã«ã€æ„図ã—ãŸAdaptyロケールコードをキーã¨å€¤ã®ãƒšã‚¢ã¨ã—ã¦è¿½åŠ ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ãã—ã¦ã€SDKを呼ã³å‡ºã™éš›ã«ãã®ã‚­ãƒ¼ã®å€¤ã‚’å–り出ã—ã¾ã™ï¼š

// 1. Modify your localization files (e.g., using Unity's Localization package)

/*
en.json
*/
{
  "adapty_paywalls_locale": "en"
}

/*
es.json
*/
{
  "adapty_paywalls_locale": "es"
}

/*
pt-BR.json
*/
{
  "adapty_paywalls_locale": "pt-br"
}

// 2. Extract and use the locale code
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
using AdaptySDK;

public class PaywallManager : MonoBehaviour
{
    public async void FetchPaywall()
    {
        // Get the current locale from Unity's Localization system
        var locale = LocalizationSettings.SelectedLocale;
        var localeCode = GetAdaptyLocaleCode(locale);
        
        // Pass locale code to Adapty.GetPaywall or Adapty.GetPaywallForDefaultAudience method
        Adapty.GetPaywall("placement_id", localeCode, (paywall, error) => {
            if (error != null) {
                // handle the error
                return;
            }
            // Use the paywall
        });
    }
    
    private string GetAdaptyLocaleCode(Locale locale)
    {
        // Convert Unity locale to Adapty format
        var localeIdentifier = locale.Identifier.Code;
        return localeIdentifier.ToLower().Replace('_', '-');
    }
}

ã“れã«ã‚ˆã‚Šã€ã‚¢ãƒ—リã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦ã©ã®ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ãŒå–å¾—ã•れるã‹ã‚’完全ã«ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã§ãã¾ã™ã€‚

ローカライゼーションã®å®Ÿè£…ï¼šåˆ¥ã®æ–¹æ³•

ã™ã¹ã¦ã®ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦ãƒ­ã‚±ãƒ¼ãƒ«ã‚³ãƒ¼ãƒ‰ã‚’明示的ã«å®šç¾©ã›ãšã«ã€åŒæ§˜ã®ï¼ˆãŸã ã—åŒä¸€ã§ã¯ãªã„ï¼‰çµæžœã‚’å¾—ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ãã®å ´åˆã€ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ ãŒæä¾›ã™ã‚‹ä»–ã®ã‚ªãƒ–ジェクトã‹ã‚‰ãƒ­ã‚±ãƒ¼ãƒ«ã‚³ãƒ¼ãƒ‰ã‚’抽出ã—ã¾ã™ï¼š

using UnityEngine;
using System.Globalization;
using AdaptySDK;

public class PaywallManager : MonoBehaviour
{
    public void FetchPaywall()
    {
        var localeCode = GetSystemLocaleCode();
        
        // Pass locale code to Adapty.GetPaywall or Adapty.GetPaywallForDefaultAudience method
        Adapty.GetPaywall("placement_id", localeCode, (paywall, error) => {
            if (error != null) {
                // handle the error
                return;
            }
            // Use the paywall
        });
    }
    
    private string GetSystemLocaleCode()
    {
        // Get the system's current culture
        var culture = CultureInfo.CurrentCulture;
        var languageCode = culture.TwoLetterISOLanguageName;
        var regionCode = culture.Name.Contains('-') ? culture.Name.Split('-')[1] : null;
        
        if (!ÿÿstring.IsNullOrEmpty(regionCode))
        {
            return $"{languageCode}-{regionCode.ToLower()}";
        }
        
        return languageCode;
    }
}

ã“ã®æ–¹æ³•ã¯ã„ãã¤ã‹ã®ç†ç”±ã‹ã‚‰ãŠå‹§ã‚ã—ã¾ã›ã‚“:

  1. iOSã§ã¯å„ªå…ˆè¨€èªžã¨ç¾åœ¨ã®ãƒ­ã‚±ãƒ¼ãƒ«ã¯åŒä¸€ã§ã¯ã‚りã¾ã›ã‚“。ローカライゼーションを正ã—ãé¸æŠžã—ãŸã„å ´åˆã¯ã€Appleã®ãƒ­ã‚¸ãƒƒã‚¯ã«é ¼ã‚‹ã‹ï¼ˆãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚ºã•ã‚ŒãŸæ–‡å­—列ファイルを使ã£ãŸæŽ¨å¥¨ã‚¢ãƒ—ローãƒã‚’使用ã™ã‚Œã°è‡ªå‹•çš„ã«æ©Ÿèƒ½ã—ã¾ã™ï¼‰ã€ã¾ãŸã¯ãã®ãƒ­ã‚¸ãƒƒã‚¯ã‚’å†å®Ÿè£…ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
  2. Adaptyã®ã‚µãƒ¼ãƒãƒ¼ãŒå—ã‘å–る内容を正確ã«äºˆæ¸¬ã™ã‚‹ã“ã¨ãŒé›£ã—ããªã‚Šã¾ã™ã€‚ãŸã¨ãˆã°iOSã§ã¯ã€ãƒ‡ãƒã‚¤ã‚¹ã‹ã‚‰ar_OM@numbers='latn'ã®ã‚ˆã†ãªãƒ­ã‚±ãƒ¼ãƒ«ã‚’å–å¾—ã—ã¦ã‚µãƒ¼ãƒãƒ¼ã«é€ä¿¡ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã®å‘¼ã³å‡ºã—ã«å¯¾ã—ã¦ã€æœŸå¾…ã—ã¦ã„ãŸar-omローカライゼーションã§ã¯ãªãã€arãŒè¿”ã•れるã“ã¨ã«ãªã‚Šã€äºˆæœŸã—ãªã„çµæžœã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

ãれã§ã‚‚ã“ã®ã‚¢ãƒ—ローãƒã‚’使用ã™ã‚‹å ´åˆã¯ã€é–¢é€£ã™ã‚‹ãƒ¦ãƒ¼ã‚¹ã‚±ãƒ¼ã‚¹ã‚’ã™ã¹ã¦ç¶²ç¾…ã—ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

ÿÿÿÿ