این راهنما بار کردن آگهی برنما تطبیقی لنگرانداخته را در برنامه iOS پوشش میدهد.
پیشنیازها
پیشاز ادامه دادن، Google Mobile Ads SDK را راهاندازی کنید.
همیشه با آگهیهای آزمایشی آزمایش کنید
هنگام ساختن و آزمایش کردن برنامههایتان، مطمئن شوید که از آگهیهای آزمایشی استفاده میکنید نه آگهیهای زنده و تولیدی. انجام ندادن این کار میتواند منجر به تعلیق حساب شما شود.
سادهترین راه برای بار کردن آگهیهای آزمایشی، استفاده از شناسه واحد آگهی آزمایشی اختصاصی ما برای برنمای iOS است:
ca-app-pub-3940256099942544/2435281174
این واحد آگهی بهطور ویژه پیکربندی شده است تا برای هر درخواست آگهی آزمایشی برگرداند، و شما میتوانید درحین کدنویسی، آزمایش، و اشکالزدایی در برنامههای خودتان از آن استفاده کنید. فقط مطمئن شوید که قبلاز انتشار برنامه، آن را با شناسه واحد آگهی خودتان جایگزین کنید.
برای اطلاعات بیشتر درباره نحوه عملکرد آگهیهای آزمایشی Google Mobile Ads SDK، به آگهیهای آزمایشی مراجعه کنید.
ایجاد GADBannerView
آگهیهای برنما در GADBannerView
عناصر نمایش داده میشوند، بنابراین اولین گام برای ادغام آگهیهای برنما این است که GADBannerView
را در سلسلهمراتب نمای خود بگنجانید. این کار معمولاً بهصورت برنامهنویسی یا ازطریق «سازنده میانها» انجام میشود.
برنامهریزیشده
GADBannerView را میتوان مستقیماً نمونهسازی کرد.
مثال زیر GADBannerView را ایجاد میکند:
Swift
// Initialize the banner view.
bannerView = BannerView()
bannerView.delegate = self
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
NSLayoutConstraint.activate([
// Align the banner's bottom edge with the safe area's bottom edge
bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
// Center the banner horizontally in the view
bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
])
SwiftUI
برای استفاده از BannerView، UIViewRepresentable ایجاد کنید:
private struct BannerViewContainer: UIViewRepresentable {
typealias UIViewType = BannerView
let adSize: AdSize
init(_ adSize: AdSize) {
self.adSize = adSize
}
func makeUIView(context: Context) -> BannerView {
let banner = BannerView(adSize: adSize)
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())
banner.delegate = context.coordinator
return banner
}
func updateUIView(_ uiView: BannerView, context: Context) {}
func makeCoordinator() -> BannerCoordinator {
return BannerCoordinator(self)
}
UIViewRepresentable را به سلسلهمراتب نما اضافه کنید و مقادیر height و
width را مشخص کنید:
var body: some View {
Spacer()
// Request an anchored adaptive banner with a width of 375.
let adSize = largeAnchoredAdaptiveBanner(width: 375)
BannerViewContainer(adSize)
.frame(width: adSize.size.width, height: adSize.size.height)
}
آبجکتیو-سی
// Initialize the banner view.
GADBannerView *bannerView = [[GADBannerView alloc] init];
bannerView.delegate = self;
UIView *view = self.view;
bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[view addSubview:bannerView];
// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
[NSLayoutConstraint activateConstraints:@[
// Align the banner's bottom edge with the safe area's bottom edge
[bannerView.bottomAnchor
constraintEqualToAnchor:view.safeAreaLayoutGuide.bottomAnchor],
// Center the banner horizontally in the view
[bannerView.centerXAnchor constraintEqualToAnchor:view.centerXAnchor],
]];
self.bannerView = bannerView;
سازنده میانای کاربری
میتوانید GADBannerView را به فایل xib یا storyboard اضافه کنید. هنگام استفاده از این
روش، حتماً فقط محدودیتهای موقعیت را به برنما اضافه کنید. برای مثال،
هنگام نمایش برنمای تطبیقی در پایین صفحه، پایین
نمای برنما را برابر با بالای «راهنمای چیدمان پایین» تنظیم کنید، و
centerX
محدودیت را برابر با centerX نمای فوقالعاده تنظیم کنید.
اندازه آگهی را تنظیم کنید
برنماهای تطبیقی بزرگ قالب بزرگتری را ارائه میدهند که برای چیدمانهای غیرپیمایشی طراحی شده است. درمقایسه با برنمای تطبیقی لنگرانداخته استاندارد، این برنماها حداکثر ارتفاع بلندتری را مجاز میکنند (تا ۲۰٪ ارتفاع صفحهنمایش، بین ۵۰ و ۱۵۰ نقطه). این فضای افزایشیافته برای محتوای ویدیویی بهینهسازی شده است.
مثال زیر اندازه برنمای تطبیقی لنگرشده بزرگ را دریافت میکند:
Swift
// Request a large anchored adaptive banner with a width of 375.
bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)
آبجکتیو-سی
// Request a large anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);
بار کردن آگهی
وقتی GADBannerView در جای خود قرار گرفت و ویژگیهای آن، مانند adUnitID،
پیکربندی شد، وقت آن است که آگهی بار شود. این کار با فراخوانی loadRequest:
در شیء GADRequest
انجام میشود:
Swift
func loadBannerAd(bannerView: BannerView) {
// Request a large anchored adaptive banner with a width of 375.
bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)
bannerView.load(Request())
}
SwiftUI
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())
آبجکتیو-سی
// Request a large anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);
[self.bannerView loadRequest:[GADRequest request]];
اشیاء GADRequest نشاندهنده یک درخواست آگهی واحد هستند و حاوی ویژگیهایی
برای مواردی مانند اطلاعات هدفیابی هستند.
بازآوری آگهی
اگر واحد آگهیتان را برای بازآوری پیکربندی کردهاید، وقتی آگهی بار نمیشود، لازم نیست آگهی دیگری درخواست کنید. Google Mobile Ads SDK به هر نرخ بازآوری که در AdMob UI مشخص کردهاید احترام میگذارد. اگر بازآوری را فعال نکردهاید، درخواست جدیدی صادر کنید. برای جزئیات بیشتر درباره بازآوری واحد آگهی، مانند تنظیم نرخ بازآوری، به استفاده از بازآوری خودکار برای آگهیهای برنما مراجعه کنید.
مدیریت تغییرات جهت
وقتی جهت صفحه برنامهتان تغییر میکند، مثلاً از حالت
portrait
به افقی، عرض دردسترس برای برنما نیز اغلب تغییر میکند. برای اطمینان از اینکه آگهی با اندازه مناسب برای چیدمان جدید نمایش داده میشود، برنمای جدیدی درخواست کنید. اگر عرض برنما ثابت است یا اگر محدودیتهای چیدمان شما میتواند
تغییر اندازه را مدیریت کند، از این مرحله رد شوید.
Swift
override func viewWillTransition(
to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator
) {
coordinator.animate(alongsideTransition: { _ in
// Load a new ad for the new orientation.
})
}
آبجکتیو-سی
- (void)viewWillTransitionToSize:(CGSize)size
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
// Load a new ad for the new orientation.
} completion:nil];
}
رویدادهای آگهی
بااستفاده از GADBannerViewDelegate، میتوانید رویدادهای چرخه حیات را
مثل زمانی که آگهی بسته میشود یا کاربر از برنامه خارج میشود بشنوید.
ثبتنام برای رویدادهای برنمایشی
برای ثبتنام در رویدادهای آگهی برنمایی، ویژگی delegate را در
GADBannerView روی شیئی تنظیم کنید که پروتکل
GADBannerViewDelegate را پیادهسازی میکند. بهطورکلی، کلاسی که تبلیغات برنمایی را پیادهسازی میکند بهعنوان کلاس نماینده نیز عمل میکند، در این صورت، دارایی delegate میتواند روی self تنظیم شود.
Swift
bannerView.delegate = self
SwiftUI
banner.delegate = context.coordinator
آبجکتیو-سی
bannerView.delegate = self;
پیادهسازی رویدادهای برنما
هرکدام از روشها در GADBannerViewDelegate بهعنوان اختیاری علامتگذاری شدهاند، بنابراین
فقط باید روشهایی را که میخواهید پیادهسازی کنید. این مثال هر روش را پیادهسازی میکند
و پیامی را در کنسول ثبت میکند:
Swift
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
print("Banner ad loaded.")
}
func bannerView(_ bannerView: BannerView, didFailToReceiveAdWithError error: Error) {
print("Banner ad failed to load: \(error.localizedDescription)")
}
func bannerViewDidRecordImpression(_ bannerView: BannerView) {
print("Banner ad recorded an impression.")
}
func bannerViewDidRecordClick(_ bannerView: BannerView) {
print("Banner ad recorded a click.")
}
func bannerViewWillPresentScreen(_ bannerView: BannerView) {
print("Banner ad will present screen.")
}
func bannerViewWillDismissScreen(_ bannerView: BannerView) {
print("Banner ad will dismiss screen.")
}
func bannerViewDidDismissScreen(_ bannerView: BannerView) {
print("Banner ad did dismiss screen.")
}
آبجکتیو-سی
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidReceiveAd");
}
- (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error {
NSLog(@"bannerView:didFailToReceiveAdWithError: %@", error.localizedDescription);
}
- (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidRecordImpression");
}
- (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewWillPresentScreen");
}
- (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewWillDismissScreen");
}
- (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidDismissScreen");
}
برای پیادهسازی روشهای نماینده برنما در برنامه نمایشی iOS API، نمونه «نماینده آگهی» را ببینید.
موارد استفاده
در اینجا چند نمونه از موارد استفاده برای این روشهای رویداد آگهی آورده شده است.
پساز دریافت آگهی، برنمایی به سلسلهمراتب نما اضافه کنید
بهتر است افزودن GADBannerView به سلسله مراتب نما را تا پساز دریافت آگهی بهتأخیر بیندازید. با گوش دادن به رویداد bannerViewDidReceiveAd: میتوانید این کار را انجام دهید:
Swift
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
// Add banner to view and add constraints.
addBannerViewToView(bannerView)
}
آبجکتیو-سی
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
// Add bannerView to view and add constraints as above.
[self addBannerViewToView:self.bannerView];
}
پویانمایی کردن آگهی برنما
همچنین میتوانید از رویداد bannerViewDidReceiveAd: برای پویانمایی آگهی برنمایی پساز بازگشت آن استفاده کنید،
همانطور که در مثال زیر نشان داده شده است:
Swift
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
bannerView.alpha = 0
UIView.animate(withDuration: 1, animations: {
bannerView.alpha = 1
})
}
آبجکتیو-سی
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
bannerView.alpha = 0;
[UIView animateWithDuration:1.0 animations:^{
bannerView.alpha = 1;
}];
}
توقف موقت و ازسرگیری برنامه
پروتکل GADBannerViewDelegate روشهایی برای مطلع کردن شما از رویدادها دارد،
مثلاً وقتی کلیک باعث میشود همپوشانی نمایش داده شود یا بسته شود. اگر میخواهید
ردیابی کنید که آیا این رویدادها بهدلیل آگهیها بوده است یا نه، برای این
روشهای GADBannerViewDelegate ثبتنام کنید.
برای دریافت همه انواع ارائههای رونهاد یا فراخوانیهای مرورگر خارجی، نه فقط آنهایی که از کلیکهای آگهی میآیند، بهتر است برنامه شما به روشهای معادل در UIViewController یا UIApplication گوش دهد. در اینجا جدولی وجود دارد که روشهای معادل iOS را نشان میدهد که همزمان با روشهای GADBannerViewDelegate فراخوانی میشوند:
| روش GADBannerViewDelegate | روش iOS |
|---|---|
bannerViewWillPresentScreen: |
viewWillDisappear: از UIViewController |
bannerViewWillDismissScreen: |
viewWillAppear: از UIViewController |
bannerViewDidDismissScreen: |
viewDidAppear: از UIViewController |
منابع بیشتر
نمونهها در GitHub
- نمونه آگهیهای برنمای تطبیقی لنگرانداخته: Swift | SwiftUI | Objective-C
- نمونه ویژگیهای پیشرفته: Swift | Objective-C
مراحل بعدی
برنماهای جمعشدنی
آگهیهای برنمای جمعشدنی آگهیهای برنمایی هستند که در ابتدا بهعنوان یک همپوشانی بزرگتر ارائه میشوند و دکمهای برای جمع کردن آگهی به اندازه کوچکتر دارند. برای بهینهسازی بیشتر عملکردتان، استفاده از آن را درنظر بگیرید. برای جزئیات بیشتر، آگهیهای برنمای جمعشدنی را ببینید.
برنماهای تطبیقی بهخط
برنماهای تطبیقی درونخطی نسبتبه برنماهای تطبیقی لنگردار بزرگتر و بلندتر هستند. ارتفاع آنها متغیر است و میتواند بهاندازه ارتفاع صفحهنمایش دستگاه باشد. برنماهای تطبیقی درونخطی نسبتبه آگهیهای برنمای تطبیقی لنگردار برای برنامههایی که آگهیهای برنما را در محتوای پیمایشی قرار میدهند توصیه میشود. برای جزئیات بیشتر، برنمای تطبیقی درونخط را ببینید.