پیش نیازها
- Google Mobile Ads SDK 19.7.0 یا بالاتر.
- راهنمای شروع را کامل کنید.
همیشه با تبلیغات آزمایشی تست کنید
هنگام ساخت و آزمایش برنامه های خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده می کنید. عدم انجام این کار می تواند منجر به تعلیق حساب شما شود.
سادهترین راه برای بارگیری آگهیهای آزمایشی، استفاده از شناسه واحد آگهی آزمایشی اختصاصی ما برای تبلیغات دارای پاداش Android است:
ca-app-pub-3940256099942544/5224354917
این بهطور ویژه پیکربندی شده است تا تبلیغات آزمایشی را برای هر درخواست بازگرداند، و شما میتوانید هنگام کدنویسی، آزمایش و اشکالزدایی از آن در برنامههای خود استفاده کنید. فقط مطمئن شوید که قبل از انتشار برنامه خود، آن را با شناسه واحد تبلیغاتی خود جایگزین کنید.
برای کسب اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK Ads Mobile، به Test Ads مراجعه کنید.
بارگیری یک شیء تبلیغاتی با پاداش
تبلیغات پاداش با فراخوانی متد load()
استاتیک در کلاس RewardedAd
و ارسال RewardedAdLoadCallback
بارگذاری میشوند. این معمولاً در متد onCreate()
یک Activity
انجام می شود. توجه داشته باشید که RewardedAdLoadCallback
مانند سایر فرمتهای بازخوانی بارگیری از LoadAdError
برای ارائه جزئیات خطای با وفاداری بالاتر استفاده میکند.
جاوا
import com.google.android.gms.ads.rewarded.RewardedAd;
public class MainActivity extends Activity {
private RewardedAd rewardedAd;
private final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
AdRequest adRequest = new AdRequest.Builder().build();
RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
adRequest, new RewardedAdLoadCallback() {
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error.
Log.d(TAG, loadAdError.toString());
rewardedAd = null;
}
@Override
public void onAdLoaded(@NonNull RewardedAd ad) {
rewardedAd = ad;
Log.d(TAG, "Ad was loaded.");
}
});
}
}
کاتلین
class MainActivity : AppCompatActivity() {
private var rewardedAd: RewardedAd? = null
private final var TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var adRequest = AdRequest.Builder().build()
RewardedAd.load(this,"ca-app-pub-3940256099942544/5224354917", adRequest, object : RewardedAdLoadCallback() {
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedAd = null
}
override fun onAdLoaded(ad: RewardedAd) {
Log.d(TAG, "Ad was loaded.")
rewardedAd = ad
}
})
}
}
FullScreenContentCallback را تنظیم کنید
FullScreenContentCallback
رویدادهای مربوط به نمایش RewardedAd
شما را مدیریت می کند. قبل از اینکه RewardedAd
خود را نشان دهید، مطمئن شوید که پاسخ تماس را به این صورت تنظیم کنید:
جاوا
rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdClicked() {
// Called when a click is recorded for an ad.
Log.d(TAG, "Ad was clicked.");
}
@Override
public void onAdDismissedFullScreenContent() {
// Called when ad is dismissed.
// Set the ad reference to null so you don't show the ad a second time.
Log.d(TAG, "Ad dismissed fullscreen content.");
rewardedAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.");
rewardedAd = null;
}
@Override
public void onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.");
}
@Override
public void onAdShowedFullScreenContent() {
// Called when ad is shown.
Log.d(TAG, "Ad showed fullscreen content.");
}
});
کاتلین
rewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
override fun onAdClicked() {
// Called when a click is recorded for an ad.
Log.d(TAG, "Ad was clicked.")
}
override fun onAdDismissedFullScreenContent() {
// Called when ad is dismissed.
// Set the ad reference to null so you don't show the ad a second time.
Log.d(TAG, "Ad dismissed fullscreen content.")
rewardedAd = null
}
override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.")
rewardedAd = null
}
override fun onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.")
}
override fun onAdShowedFullScreenContent() {
// Called when ad is shown.
Log.d(TAG, "Ad showed fullscreen content.")
}
}
آگهی را نمایش دهید
هنگامی که یک تبلیغ پاداش نشان می دهید، از یک شی OnUserEarnedRewardListener
برای مدیریت رویدادهای پاداش استفاده می کنید.
جاوا
if (rewardedAd != null) {
Activity activityContext = MainActivity.this;
rewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// Handle the reward.
Log.d(TAG, "The user earned the reward.");
int rewardAmount = rewardItem.getAmount();
String rewardType = rewardItem.getType();
}
});
} else {
Log.d(TAG, "The rewarded ad wasn't ready yet.");
}
کاتلین
rewardedAd?.let { ad ->
ad.show(this, OnUserEarnedRewardListener { rewardItem ->
// Handle the reward.
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
Log.d(TAG, "User earned the reward.")
})
} ?: run {
Log.d(TAG, "The rewarded ad wasn't ready yet.")
}
[اختیاری] تأیید اعتبار سمت سرور (SSV) تماس های برگشتی
برنامههایی که به دادههای اضافی در تماسهای تأیید سمت سرور نیاز دارند، باید از ویژگی داده سفارشی تبلیغات پاداش استفاده کنند. هر مقدار رشته تنظیم شده روی یک شیء تبلیغاتی پاداش داده شده به پارامتر query custom_data
در SSV ارسال می شود. اگر مقدار داده سفارشی تنظیم نشده باشد، مقدار پارامتر query custom_data
در پاسخ تماس SSV وجود نخواهد داشت.
نمونه کد زیر نشان میدهد که چگونه دادههای سفارشی را روی یک شی تبلیغاتی پاداش داده شده قبل از درخواست آگهی تنظیم کنید.
جاوا
RewardedAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379",
new AdRequest.Builder().build(), new RewardedAdLoadCallback() {
@Override
public void onAdLoaded(RewardedAd ad) {
Log.d(TAG, "Ad was loaded.");
rewardedAd = ad;
ServerSideVerificationOptions options = new ServerSideVerificationOptions
.Builder()
.setCustomData("SAMPLE_CUSTOM_DATA_STRING")
.build();
rewardedAd.setServerSideVerificationOptions(options);
}
@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
Log.d(TAG, loadAdError.toString());
rewardedAd = null;
}
});
کاتلین
RewardedAd.load(this, "ca-app-pub-3940256099942544/5354046379",
AdRequest.Builder().build(), object : RewardedAdLoadCallback() {
override fun onAdLoaded(ad: RewardedAd) {
Log.d(TAG, "Ad was loaded.")
rewardedInterstitialAd = ad
val options = ServerSideVerificationOptions.Builder()
.setCustomData("SAMPLE_CUSTOM_DATA_STRING")
.build()
rewardedAd.setServerSideVerificationOptions(options)
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedAd = null
}
})
اگر میخواهید رشته پاداش سفارشی را تنظیم کنید، باید قبل از نمایش آگهی این کار را انجام دهید.
سوالات متداول
- آیا مهلت زمانی برای تماس اولیه وجود دارد؟
- پس از 10 ثانیه، Google Mobile Ads SDK
OnInitializationCompleteListener
را فراخوانی می کند، حتی اگر یک شبکه میانجی هنوز راه اندازی اولیه را کامل نکرده باشد. - اگر برخی از شبکههای میانجی آماده نباشند، چه باید کرد؟
توصیه میکنیم یک آگهی را در پاسخ به تماس
OnInitializationCompleteListener
بارگیری کنید. حتی اگر یک شبکه میانجی آماده نباشد، Google Mobile Ads SDK همچنان از آن شبکه درخواست تبلیغ میکند. بنابراین، اگر یک شبکه میانجی پس از اتمام زمان، شروع به کار کند، همچنان میتواند درخواستهای تبلیغات آینده را در آن جلسه سرویس دهد.میتوانید با فراخوانی
MobileAds.getInitializationStatus()
به بررسی وضعیت اولیه همه آداپتورها در طول جلسه برنامه خود ادامه دهید.- چگونه می توانم بفهمم که چرا یک شبکه میانجی خاص آماده نیست؟
AdapterStatus.getDescription()
توضیح می دهد که چرا یک آداپتور آماده سرویس دهی به درخواست های تبلیغاتی نیست.- آیا پاسخ تماس
onUserEarnedReward()
همیشه قبل از پاسخ به تماسonAdDismissedFullScreenContent()
فراخوانی می شود؟ برای تبلیغات Google، همه تماسهای
onUserEarnedReward()
قبل ازonAdDismissedFullScreenContent()
انجام میشود. برای تبلیغاتی که از طریق میانجیگری ارائه میشوند، اجرای SDK شبکه تبلیغاتی شخص ثالث ترتیب برگشت به تماس را تعیین میکند. برای SDK های شبکه تبلیغاتی که یک پاسخ تماس نزدیک با اطلاعات پاداش ارائه می کنند، آداپتور میانجیonUserEarnedReward()
قبل ازonAdDismissedFullScreenContent()
فراخوانی می کند.
نمونه هایی در GitHub
مراحل بعدی
موضوعات زیر را بررسی کنید: