تبلیغات جایزهدار تبلیغاتی هستند که کاربران میتوانند در ازای دریافت جوایز درونبرنامهای با آنها تعامل داشته باشند. این راهنما به شما نشان میدهد که چگونه تبلیغات جایزهدار AdMob را در یک برنامه iOS ادغام کنید. برخی از داستانهای موفقیت مشتریان را بخوانید: مطالعه موردی ۱ ، مطالعه موردی ۲ . قبل از ادامه، Google Mobile Ads SDK را راهاندازی کنید . هنگام ساخت و آزمایش برنامههای خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده میکنید. عدم انجام این کار میتواند منجر به مسدود شدن حساب شما شود. سادهترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه واحد تبلیغات آزمایشی اختصاصی ما برای تبلیغات پاداشدار iOS است: این ابزار به طور ویژه پیکربندی شده است تا برای هر درخواست، تبلیغات آزمایشی را برگرداند و شما میتوانید در برنامههای خود هنگام کدنویسی، آزمایش و اشکالزدایی از آن استفاده کنید. فقط قبل از انتشار برنامه، مطمئن شوید که آن را با شناسه واحد تبلیغاتی خود جایگزین میکنید. برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی Google Mobile Ads SDK ، به بخش تبلیغات آزمایشی مراجعه کنید. مراحل اصلی برای ادغام تبلیغات جایزهدار به شرح زیر است: بارگذاری یک تبلیغ با استفاده از متد برنامههایی که در فراخوانیهای تأیید سمت سرور به دادههای اضافی نیاز دارند، باید از ویژگی دادههای سفارشی تبلیغات پاداشی استفاده کنند. هر مقدار رشتهای که روی یک شیء تبلیغ پاداشی تنظیم شود، به پارامتر پرسوجوی نمونه کد زیر نحوه تنظیم دادههای سفارشی روی یک شیء تبلیغاتی پاداشدار قبل از درخواست تبلیغ را نشان میدهد: SAMPLE_CUSTOM_DATA_STRING را با دادههای سفارشی خود جایگزین کنید. برای دریافت اعلانها برای رویدادهای ارائه، باید پروتکل قبل از نمایش یک تبلیغ جایزهدار به کاربران، باید به کاربر حق انتخاب صریح برای مشاهده محتوای تبلیغ جایزهدار در ازای دریافت جایزه را بدهید. تبلیغات جایزهدار همیشه باید یک تجربه انتخابی باشند. هنگام ارائه تبلیغ خود، باید یک شیء کد زیر بهترین روش برای نمایش یک تبلیغ جایزهدار را ارائه میدهد: به رویدادهای رابط کاربری در نما گوش دهید تا زمان نمایش تبلیغ را تعیین کنید. تبلیغ جایزهدار را از مدل نما نمایش دهید: توصیه میکنیم یک تبلیغ را درون شما میتوانید با فراخوانی ویژگی برای تبلیغات گوگل، تمام فراخوانیهای نمونههای کامل تبلیغات پاداشدار را به زبان دلخواه خود مشاهده کنید: درباره حریم خصوصی کاربران بیشتر بدانید.ca-app-pub-3940256099942544/1712485313load(adUnitID:request) در کلاس GADRewardedAd انجام میشود. func loadRewardedAd() async {
do {
rewardedAd = try await RewardedAd.load(
// Replace this ad unit ID with your own ad unit ID.
with: "ca-app-pub-3940256099942544/1712485313", request: Request())
rewardedAd?.fullScreenContentDelegate = self
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
import GoogleMobileAds
class RewardedViewModel: NSObject, ObservableObject, FullScreenContentDelegate {
@Published var coins = 0
private var rewardedAd: RewardedAd?
func loadAd() async {
do {
rewardedAd = try await RewardedAd.load(
with: "ca-app-pub-3940256099942544/1712485313", request: Request())
rewardedAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load rewarded ad with error: \(error.localizedDescription)")
}
}
// Replace this ad unit ID with your own ad unit ID.
[GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
request:[GADRequest request]
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
self.rewardedAd.fullScreenContentDelegate = self;
}];
custom_data از فراخوانی SSV ارسال میشود. اگر هیچ مقدار داده سفارشی تنظیم نشود، مقدار پارامتر پرسوجوی custom_data در فراخوانی SSV وجود نخواهد داشت.GADFullScreenContentDelegate را به ویژگی fullScreenContentDelegate تبلیغ برگردانده شده اختصاص دهید: rewardedAd?.fullScreenContentDelegate = self
rewardedAd?.fullScreenContentDelegate = self
self.rewardedAd.fullScreenContentDelegate = self;
GADFullScreenContentDelegate فراخوانیهای برگشتی را برای زمانی که تبلیغ با موفقیت یا عدم موفقیت نمایش داده میشود و زمانی که رد میشود، مدیریت میکند. کد زیر نحوه پیادهسازی این پروتکل را نشان میدهد: func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
// Clear the rewarded ad.
rewardedAd = nil
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called with error: \(error.localizedDescription).")
}
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the rewarded ad.
rewardedAd = nil
}
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the rewarded ad.
self.rewardedAd = nil;
}
- (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
}
GADUserDidEarnRewardHandler ارائه دهید تا پاداش را برای کاربر مدیریت کند.rewardedAd.present(from: self) {
let reward = rewardedAd.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
}
var body: some View {
VStack(spacing: 20) {
Button("Watch video for additional 10 coins") {
viewModel.showAd()
showWatchVideoButton = false
}
func showAd() {
guard let rewardedAd = rewardedAd else {
return print("Ad wasn't ready.")
}
rewardedAd.present(from: nil) {
let reward = rewardedAd.adReward
print("Reward amount: \(reward.amount)")
self.addCoins(reward.amount.intValue)
}
}
[self.rewardedAd presentFromRootViewController:self
userDidEarnRewardHandler:^{
GADAdReward *reward = self.rewardedAd.adReward;
NSString *rewardMessage = [NSString
stringWithFormat:@"Reward received with currency %@ , amount %lf",
reward.type, [reward.amount doubleValue]];
NSLog(@"%@", rewardMessage);
// TODO: Reward the user.
}];
GADRewardedAd را دریافت کنم؟userDidEarnReward به مبلغ پاداش نیاز دارید، GADRewardedAd یک ویژگی adReward دارد که میتوانید آن را بررسی کنید تا مبلغ پاداش را پس از بارگذاری تبلیغ تأیید کنید.GADInitializationCompletionHandler ارائه شده به متد startWithCompletionHandler: را فراخوانی میکند، حتی اگر یک شبکه میانجی هنوز مقداردهی اولیه را تکمیل نکرده باشد.GADInitializationCompletionHandler بارگذاری کنید. حتی اگر یک شبکه میانجیگری آماده نباشد، Google Mobile Ads SDK همچنان از آن شبکه درخواست تبلیغ میکند. بنابراین اگر یک شبکه میانجیگری پس از اتمام زمان، مقداردهی اولیه را انجام دهد، همچنان میتواند درخواستهای تبلیغاتی آینده را در آن جلسه ارائه دهد.GADMobileAds.initializationStatus ، وضعیت مقداردهی اولیه همه آداپتورها را در طول جلسه برنامه خود بررسی کنید.description از یک شیء GADAdapterStatus توضیح میدهد که چرا یک آداپتور آمادهی سرویسدهی به درخواستهای تبلیغاتی نیست.userDidEarnRewardHandler همیشه قبل از متد adDidDismissFullScreenContent: delegate فراخوانی میشود؟userDidEarnRewardHandler قبل از adDidDismissFullScreenContent: رخ میدهند. برای تبلیغاتی که از طریق میانجیگری ارائه میشوند، پیادهسازی SDK شبکه تبلیغاتی شخص ثالث، ترتیب فراخوانی را تعیین میکند. برای SDKهای شبکه تبلیغاتی که یک متد نماینده واحد با اطلاعات پاداش ارائه میدهند، آداپتور میانجیگری، userDidEarnRewardHandler قبل از adDidDismissFullScreenContent: فراخوانی میکند.
تبلیغات با پاداش
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2026-04-03 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2026-04-03 بهوقت ساعت هماهنگ جهانی."],[],["This guide details how to integrate AdMob rewarded ads into an iOS app. Key actions include loading ads using `GADRewardedAd.load(adUnitID:request)`, optionally validating server-side verification (SSV) callbacks by setting custom data, and registering for callbacks via `GADFullScreenContentDelegate`. Ads are displayed using `rewardedAd.present(from:)`, which triggers a user reward event. Always use the designated test ad unit ID during development, and remember that loaded ads are one-time-use objects.\n"]]