انتقال نسخه‌های کیت توسعه نرم‌افزار

پلاتفرم را انتخاب کنید: iOS Unity Android (Legacy)

آخرین به‌روزرسانی: فوریه ۲۰۲۳

این صفحه انتقال برای نسخه‌های فعلی و قبلی را پوشش می‌دهد.

انتقال از نسخه ۷ به نسخه ۸

قالب‌های «تمام‌صفحه» اکنون از روش بارگیری ایستا استفاده می‌کنند

در نسخه ۷ افزونه، آگهی‌های بینابینی و پاداش‌دار دارای روش LoadAd() در سطح نمونه برای بار کردن آگهی بودند، درحالی‌که آگهی بینابینی پاداش‌دار و آگهی‌های باز کردن برنامه دارای روش ثابت Load() برای بار کردن آگهی‌ها بودند. در نسخه ۸، همه قالب‌های آگهی تمام‌صفحه (بینابینی، پاداش‌دار، بینابینی پاداش‌دار، و باز کردن برنامه) روش Load() ثابتی برای بار کردن آگهی‌ها خواهند داشت. در اینجا مثالی از نحوه بار کردن آگهی بینابینی آورده شده است:

نسخه ۸ (کنونی)

#if UNITY_ANDROID
const string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
const string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
const string adUnitId = "unexpected_platform";
#endif

private InterstitialAd _interstitialAd;

private void LoadAd()
{
    // Load an interstitial ad
    InterstitialAd.Load(adUnitId, new AdRequest(),
        (InterstitialAd ad, LoadAdError loadAdError) =>
        {
            if (loadAdError != null)
            {
                Debug.Log("Interstitial ad failed to load with error: " +
                           loadAdError.GetMessage());
                return;
            }
            else if (ad == null)
            {
                Debug.Log("Interstitial ad failed to load.");
                return;
            }

            Debug.Log("Interstitial ad loaded.");
            _interstitialAd = ad;
        });
}

نسخه ۷ (قدیمی)

#if UNITY_ANDROID
const string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
const string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
const string adUnitId = "unexpected_platform";
#endif

private InterstitialAd _interstitialAd;

private void LoadInterstitialAd()
{
    // Initialize an InterstitialAd.
    _interstitialAd = new InterstitialAd(adUnitId);
    // Called when an ad request has successfully loaded.
    _interstitialAd.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request has failed to load.
    _interstitialAd.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    _interstitialAd.LoadAd(request);
}

private void HandleOnAdLoaded(object sender, EventArgs args)
{
    Debug.Log("Interstitial ad loaded.");
}

private void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    if (args != null)
    {
        Debug.Log("Interstitial ad failed to load with error: " +
                   args.LoadAdError.GetMessage());
    }
}

در اینجا مثالی از نحوه بار کردن آگهی پاداش‌دار آورده شده است:

نسخه ۸ (کنونی)

// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
const string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
const string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
const string adUnitId = "unused";
#endif

private RewardedAd _rewardedAd;

private void LoadRewardedAd()
{
    // Load a rewarded ad
    RewardedAd.Load(adUnitId, new AdRequest(),
        (Rewarded ad, LoadAdError loadError) =>
        {
            if (loadError != null)
            {
                Debug.Log("Rewarded ad failed to load with error: " +
                           loadError.GetMessage());
                return;
            }
            else if (ad == null)
            {
                Debug.Log("Rewarded ad failed to load.");
                    return;
            }

            Debug.Log("Rewarded ad loaded.");
            _rewardedAd = ad;
        });
}

نسخه ۷ (قدیمی)

// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
const string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
const string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
const string adUnitId = "unused";
#endif

private RewardedAd _rewardedAd;

private void LoadRewardedAd()
{
    // Initialize an InterstitialAd.
    _rewardedAd = new RewardedAd(adUnitId);
    // Called when an ad request has successfully loaded.
    _rewardedAd.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request has failed to load.
    _rewardedAd.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    _rewardedAd.LoadAd(request);
}

private void HandleOnAdLoaded(object sender, EventArgs args)
{
    Debug.Log("Rewarded ad loaded.");
}

private void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    if (args != null)
    {
        Debug.Log("Rewarded ad failed to load with error: " +
                   args.LoadAdError.GetMessage());
    }
}

از CanShowAd()‎ برای بررسی آمادگی در نمایش آگهی‌های تمام‌صفحه استفاده کنید

در نسخه ۷، آگهی‌های تمام‌صفحه (بینابینی، پاداش‌دار، بینابینی پاداش‌دار، و آگهی‌های باز شدن برنامه) روش IsLoaded() را داشتند که اگر آگهی بار شده بود، true را برمی‌گرداند. به‌دلیل تغییر در نحوه بار شدن آگهی‌ها، در نسخه ۸ تا زمانی که آگهی بار نشود به شیء آگهی تمام‌صفحه دسترسی ندارید، که این امر باعث می‌شود روش IsLoaded() منسوخ شود.

نسخه ۸ روش جدیدی به‌نام CanShowAd() دارد که اگر آگهی همچنان قابل‌نمایش باشد، true را برمی‌گرداند. در اینجا مثالی از نحوه استفاده از CanShowAd() در آگهی بینابینی آورده شده است:

نسخه ۸ (کنونی)

private InterstitialAd _interstitalAd;

public void ShowInterstitialAd()
{
    if (_interstitalAd != null && _interstitalAd.CanShowAd())
    {
        _interstitalAd.Show();
    }
    else
    {
        Debug.Log("Interstitial ad cannot be shown.");
    }
}

نسخه ۷ (قدیمی)

private InterstitialAd _interstitalAd;

public void ShowInterstitialAd()
{
    if (_interstitalAd != null && _interstitalAd.IsLoaded())
    {
        _interstitalAd.Show();
    }
    else
    {
        Debug.Log("Interstitial ad is not ready yet.");
    }
}

استفاده از Show(Action) برای نمایش آگهی‌های دارای پاداش

در نسخه ۷ افزونه، آگهی‌های پاداشی دارای روش Show() با رویداد جداگانه OnUserEarnedReward برای رسیدگی به سیگنال‌های پاداش کاربر بودند، و آگهی بینابینی پاداشی دارای روش Show(Action<Reward>) با فراخوانی برگشتی برای رسیدگی به سیگنال پاداش کاربر بود. در نسخه ۸، قالب‌های آگهی پاداشی و تمام‌صفحه پاداشی دارای روش Show(Action<Reward>) با فراخوان برگشتی برای رسیدگی به اعلان پاداش کاربر خواهند بود.

در اینجا نمونه‌ای از نحوه نمایش آگهی پاداش‌دار آورده شده است:

نسخه ۸ (کنونی)

private RewardedAd _rewardedAd;

public void ShowRewardedAd()
{
    if (_rewardedAd != null && _rewardedAd.CanShowAd())
    {
        _rewardedAd.Show((Reward reward) =>
        {
            Debug.Log("Rewarded ad granted a reward: " +
                    reward.Amount);
        });
    }
    else
    {
        Debug.Log("Rewarded ad cannot be shown.");
    }
}

نسخه ۷ (قدیمی)

private RewardedAd _rewardedAd;

public void ShowRewardedAd()
{
    if (_rewardedAd != null && _rewardedAd.CanShowAd())
    {
        _rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        _rewardedAd.Show();
    }
    else
    {
        Debug.Log("Rewarded ad is not ready yet.");
    }
}
public void HandleUserEarnedReward(object sender, Reward reward)
{
    Debug.Log("Rewarded ad granted a reward: " +
               reward.Amount);
}

نمایندگان رویداد آگهی اکنون آرگومان‌های نوع خاصی را اتخاذ می‌کنند

در نسخه ۷ میانای برنامه‌سازی کاربردی، از EventHandlers هنگام تعریف کردن نماینده‌های رویداد استفاده کردیم. در نسخه ۸، نمایندگان عمومی را برای رویدادهای آگهی اتخاذ کردیم. درنتیجه، رویدادها اکنون مقادیر رویداد را مستقیماً بدون قرار گرفتن در کلاس EventArg منتشر می‌کنند.

در اینجا مثالی از استفاده از OnAdPaid (به‌جای OnPaidEvent) آورده شده است:

نسخه ۸ (کنونی)

private BannerView _bannerView;

public void ConfigureBanner()
{
    _bannerView.OnAdPaid += (AdValue value) =>
    {
        AdValue value = value;
    };
}

نسخه ۷ (قدیمی)

private BannerView _bannerView;

public void ConfigureBanner()
{
    _bannerView.OnPaidEvent += (object sender, AdValueEventArg arg) =>
    {
        AdValue value = arg.Value;
    };
}

قالب‌های آگهی اکنون با میانای یکسانی مطابقت دارند

در نسخه ۷ افزونه، بین نام‌های رویداد در قالب‌های آگهی تمام‌صفحه مغایرت وجود داشت. در نسخه ۸، نام بسیاری از روش‌های API خود را تغییر داده‌ایم تا در قالب‌های آگهی ما سازگار باشند.

جدول زیر تغییرات کلاس معرفی‌شده در نسخه ۸ را فهرست می‌کند.

BannerView
v7v8
OnAdLoaded OnBannerAdLoaded
OnAdFailedToLoad OnBannerAdLoadFailed
OnAdOpening OnAdFullScreenContentOpened
OnAdClosed OnAdFullScreenContentClosed
OnPaidEvent OnAdPaid
InterstitialAd
LoadAd()‎ InterstitialAd.Load()
InterstitialAd() InterstitialAd.Load()
OnAdLoaded InterstitialAd.Load()
OnAdFailedToLoad InterstitialAd.Load()
OnAdOpening OnAdFullScreenContentOpened
OnAdClosed OnAdFullScreenContentClosed
OnAdFailedToShow OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
OnPaidEvent OnAdPaid
RewardedAd
LoadAd()‎ RewardedAd.Load()
RewardedAd() RewardedAd.Load()
OnAdLoaded RewardedAd.Load()
OnAdFailedToLoad RewardedAd.Load()
OnAdOpening OnAdFullScreenContentOpened
OnAdClosed OnAdFullScreenContentClosed
OnAdFailedToShow OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
OnPaidEvent OnAdPaid
Show() Show()‎
OnUserEarnedReward Show()‎
RewardedInterstitialAd
LoadAd()‎ RewardedInterstitialAd.Load()
OnPaidEvent OnAdPaid
OnAdDidPresentFullScreenContent OnAdFullScreenContentOpened
OnAdDidDismissFullScreenContent OnAdFullScreenContentClosed
OnAdFailedToPresentFullScreenContent OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
AppOpenAd
LoadAd()‎ AppOpenAd.Load()
OnPaidEvent OnAdPaid
OnAdDidPresentFullScreenContent OnAdFullScreenContentOpened
OnAdDidDismissFullScreenContent OnAdFullScreenContentClosed
OnAdFailedToPresentFullScreenContent OnAdFullScreenContentFailed
OnAdDidRecordImpression OnAdImpressionRecorded
AdErrorEventArgs
AdErrorEventArgs.AdError مستقیماً از AdError استفاده کنید.
AdFailedToLoadEventArgs
AdFailedToLoadEventArgs.LoadAdError مستقیماً از LoadAdError استفاده کنید.
AdValueEventArgs
AdValueEventArgs.AdValue مستقیماً از AdValue استفاده کنید.