تبلیغات بینابینی، تبلیغات تمام صفحه ای هستند که تا زمانی که کاربر بسته شود، رابط کاربری یک برنامه را پوشش می دهد. آنها معمولاً در نقاط انتقال طبیعی در جریان یک برنامه نمایش داده می شوند، مانند بین فعالیت ها یا در طول مکث بین سطوح در یک بازی. هنگامی که یک برنامه یک تبلیغ بینابینی را نشان می دهد، کاربر این انتخاب را دارد که یا روی تبلیغ ضربه زده و به مقصد خود ادامه دهد یا آن را ببندد و به برنامه بازگردد. مطالعه موردی .
این راهنما به شما نشان می دهد که چگونه تبلیغات بینابینی را در یک برنامه iOS ادغام کنید.
پیش نیازها
- Google Mobile Ads SDK 8.0.0 یا بالاتر.
- راهنمای شروع را کامل کنید.
همیشه با تبلیغات آزمایشی تست کنید
هنگام ساخت و آزمایش برنامه های خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده می کنید. عدم انجام این کار می تواند منجر به تعلیق حساب شما شود.
سادهترین راه برای بارگیری آگهیهای آزمایشی، استفاده از شناسه واحد آگهی آزمایشی اختصاصی ما برای فایلهای بینابینی iOS است:
/21775744923/example/interstitial
این بهطور ویژه پیکربندی شده است تا تبلیغات آزمایشی را برای هر درخواست بازگرداند، و شما میتوانید هنگام کدنویسی، آزمایش و اشکالزدایی از آن در برنامههای خود استفاده کنید. فقط مطمئن شوید که قبل از انتشار برنامه خود، آن را با شناسه واحد تبلیغاتی خود جایگزین کنید.
برای کسب اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK Ads Mobile، به Test Ads مراجعه کنید.
پیاده سازی
مراحل اصلی برای یکپارچه سازی تبلیغات بینابینی عبارتند از:
- یک تبلیغ را بارگیری کنید.
- برای پاسخ به تماس ها ثبت نام کنید.
- تبلیغ را نمایش دهید و رویداد پاداش را مدیریت کنید.
یک تبلیغ را بارگیری کنید
بارگذاری یک تبلیغ با استفاده از روش load(adUnitID:request)
در کلاس GAMInterstitialAd
انجام می شود.
سویفت
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
private var interstitialAd: GADInterstitialAd?
func loadAd() async {
do {
interstitialAd = try await GADInterstitialAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
هدف-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:request
completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
}];
}
برای پاسخ به تماس ها ثبت نام کنید
برای دریافت اعلانها برای رویدادهای ارائه، باید پروتکل GADFullScreenContentDelegate
را پیادهسازی کنید و آن را به ویژگی fullScreenContentDelegate
تبلیغ برگشتی اختصاص دهید. پروتکل GADFullScreenContentDelegate
برای زمانی که تبلیغ با موفقیت یا ناموفق نمایش داده می شود و زمانی که رد می شود، پاسخ به تماس ها را کنترل می کند. کد زیر نحوه پیاده سازی پروتکل و اختصاص آن به تبلیغ را نشان می دهد:
سویفت
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
/// Tells the delegate that the ad failed to present full screen content.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// Tells the delegate that the ad will present full screen content.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// Tells the delegate that the ad dismissed full screen content.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
}
SwiftUI
ویژگی fullScreenContentDelegate
را به تبلیغ برگشتی اختصاص دهید:
interstitialAd?.fullScreenContentDelegate = self
اجرای پروتکل:
func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: GADFullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
هدف-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:request
completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
}
/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"Ad did fail to present full screen content.");
}
/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad will present full screen content.");
}
/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad did dismiss full screen content.");
}
GAMInterstitialAd
یک شی یک بار مصرف است. این بدان معنی است که وقتی یک تبلیغ بینابینی نشان داده شد، دیگر نمی توان آن را نشان داد. بهترین روش این است که یک تبلیغ بینابینی دیگر را در روش adDidDismissFullScreenContent:
در GADFullScreenContentDelegate
بارگیری کنید تا به محض رد شدن آگهی قبلی، آگهی بینابینی بعدی بارگیری شود.
نمایش آگهی
بینابینی ها باید در طول مکث های طبیعی در جریان برنامه نمایش داده شوند. بین سطوح یک بازی مثال خوبی است، یا پس از اتمام کار کاربر.
سویفت
guard let interstitial = interstitial else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)
SwiftUI
برای تعیین زمان نمایش آگهی، به رویدادهای رابط کاربری در نما گوش دهید.
var body: some View {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
تبلیغ بینابینی را از مدل view ارائه دهید:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(fromRootViewController: nil)
}
هدف-C
if (self.interstitial) {
// The UIViewController parameter is nullable.
[self.interstitial presentFromRootViewController:nil];
} else {
NSLog(@"Ad wasn't ready");
}
بهترین شیوه ها
- در نظر بگیرید که آیا تبلیغات بینابینی نوع مناسبی از تبلیغات برای برنامه شما هستند یا خیر.
- تبلیغات بینابینی در برنامه هایی با نقاط انتقال طبیعی بهترین کارایی را دارند. نتیجه گیری یک کار در یک برنامه، مانند اشتراک گذاری یک تصویر یا تکمیل یک سطح بازی، چنین نقطه ای را ایجاد می کند. از آنجایی که کاربر انتظار یک وقفه در عمل را دارد، ارائه یک تبلیغ بینابینی بدون ایجاد اختلال در تجربه او آسان است. مطمئن شوید که در چه نقاطی از گردش کار برنامه خود تبلیغات بینابینی را نمایش می دهید و احتمالاً کاربر چگونه پاسخ می دهد.
- به یاد داشته باشید هنگام نمایش یک تبلیغ بینابینی، اقدام را متوقف کنید.
- انواع مختلفی از تبلیغات بینابینی وجود دارد: متن، تصویر، ویدیو و موارد دیگر. مهم است که مطمئن شوید وقتی برنامه شما یک تبلیغ بینابینی را نمایش میدهد، استفاده از برخی منابع را نیز به حالت تعلیق در میآورد تا تبلیغ بتواند از آنها استفاده کند. به عنوان مثال، هنگامی که برای نمایش یک تبلیغ بینابینی تماس می گیرید، مطمئن شوید که خروجی صوتی تولید شده توسط برنامه شما را متوقف کنید. میتوانید پخش صداها را در مدیریت رویداد
adDidDismissFullScreenContent:
که پس از پایان تعامل کاربر با آگهی فراخوانی میشود، از سر بگیرید. علاوه بر این، در حین نمایش آگهی، به طور موقت هرگونه کار محاسباتی شدید (مانند حلقه بازی) را متوقف کنید. این تضمین می کند که کاربر گرافیک آهسته یا بی پاسخ یا ویدئویی با لکنت را تجربه نکند. - زمان بارگذاری کافی را در نظر بگیرید.
- همانطور که اطمینان از نمایش تبلیغات بینابینی در زمان مناسب بسیار مهم است، اطمینان از اینکه کاربر مجبور نیست منتظر بارگذاری آنها بماند نیز مهم است. بارگیری آگهی از قبل قبل از اینکه قصد نمایش آن را داشته باشید، می تواند اطمینان حاصل کند که برنامه شما یک آگهی بینابینی کاملاً بارگذاری شده در زمان نمایش آن آماده است.
- کاربر را با تبلیغات غرق نکنید.
- در حالی که افزایش تعداد تبلیغات بینابینی در برنامه شما ممکن است راهی عالی برای افزایش درآمد به نظر برسد، همچنین می تواند تجربه کاربر را کاهش دهد و نرخ کلیک را کاهش دهد. اطمینان حاصل کنید که کاربران آنقدر مکرر قطع نمی شوند که دیگر نتوانند از استفاده از برنامه شما لذت ببرند.
- از پاسخ تماس تکمیل بار برای نشان دادن بینابینی استفاده نکنید.
- این می تواند باعث تجربه کاربری ضعیف شود. در عوض، قبل از اینکه نیاز به نمایش آگهی داشته باشید، آن را از قبل بارگیری کنید. سپس متد
canPresentFromRootViewController:error:
را درGAMInterstitialAd
بررسی کنید تا دریابید که آیا آماده نمایش است یا خیر.
نمونه هایی در GitHub
نمونه های کامل تبلیغات بینابینی را به زبان دلخواه خود مشاهده کنید:
مراحل بعدی
- درباره هدف گذاری تبلیغات و دستورالعمل های تبلیغات بینابینی بیشتر بیاموزید.
- درباره حریم خصوصی کاربر بیشتر بیاموزید.