این راهنما نحوه بارگذاری یک بنر تبلیغاتی تطبیقی متصل به یک اپلیکیشن iOS را پوشش میدهد.
قبل از ادامه، Google Mobile Ads SDK را راهاندازی کنید .
هنگام ساخت و آزمایش برنامههای خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده میکنید. عدم انجام این کار میتواند منجر به مسدود شدن حساب شما شود.
سادهترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه واحد تبلیغاتی آزمایشی اختصاصی ما برای بنرهای iOS است:
ca-app-pub-3940256099942544/2435281174
این ابزار به طور ویژه پیکربندی شده است تا برای هر درخواست، تبلیغات آزمایشی را برگرداند و شما میتوانید در برنامههای خود هنگام کدنویسی، آزمایش و اشکالزدایی از آن استفاده کنید. فقط قبل از انتشار برنامه، مطمئن شوید که آن را با شناسه واحد تبلیغاتی خود جایگزین میکنید.
برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی Google Mobile Ads SDK ، به بخش تبلیغات آزمایشی مراجعه کنید.
بنرهای تبلیغاتی در اشیاء GADBannerView نمایش داده میشوند، بنابراین اولین قدم برای ادغام بنرهای تبلیغاتی، گنجاندن یک GADBannerView در سلسله مراتب نمای شما است. این کار معمولاً یا به صورت برنامهنویسی یا از طریق Interface Builder انجام میشود.
یک GADBannerView همچنین میتواند مستقیماً نمونهسازی شود. مثال زیر یک GADBannerView ایجاد میکند:
// 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),
])
برای استفاده از 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 به یک فایل storyboard یا xib اضافه کنید. هنگام استفاده از این روش، مطمئن شوید که فقط محدودیتهای موقعیت را روی بنر اضافه میکنید. برای مثال، هنگام نمایش یک بنر تطبیقی در پایین صفحه، پایین نمای بنر را برابر با بالای Bottom Layout Guide تنظیم کنید و محدودیت centerX را برابر با centerX نمای بالا قرار دهید.
مثال زیر یک بنر تطبیقی با اندازه بزرگ را دریافت میکند:
// 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 انجام میشود:
func loadBannerAd(bannerView: BannerView) {
// Request a large anchored adaptive banner with a width of 375.
bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)
bannerView.load(Request())
}
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 مشخص کردهاید، در نظر میگیرد. اگر بهروزرسانی را فعال نکردهاید، یک درخواست جدید ارسال کنید. برای جزئیات بیشتر در مورد بهروزرسانی واحد تبلیغاتی، مانند تنظیم نرخ بهروزرسانی، به بخش «استفاده از بهروزرسانی خودکار برای تبلیغات بنری» مراجعه کنید. وقتی جهت صفحه نمایش برنامه شما تغییر میکند، مثلاً از حالت با استفاده از برای ثبت رویدادهای تبلیغات بنری، ویژگی هر یک از متدهای موجود در برای پیادهسازی متدهای نماینده بنر در برنامه iOS API Demo، به مثال نماینده تبلیغات مراجعه کنید. در اینجا چند نمونه از موارد استفاده برای این روشهای رویداد تبلیغاتی آورده شده است. ممکن است بخواهید اضافه کردن همچنین میتوانید از رویداد پروتکل برای دریافت انواع نمایشهای روی هم افتاده یا فراخوانیهای مرورگر خارجی، نه فقط آنهایی که از کلیکهای تبلیغاتی میآیند، بهتر است برنامه شما به دنبال متدهای معادل در بنرهای تبلیغاتی تاشو، بنرهایی هستند که در ابتدا به صورت یک لایه بزرگتر ارائه میشوند و دکمهای برای جمع کردن تبلیغ به اندازه کوچکتر وجود دارد. برای بهینهسازی بیشتر عملکرد خود، استفاده از آن را در نظر بگیرید. برای جزئیات بیشتر به بنرهای تبلیغاتی تاشو مراجعه کنید. بنرهای تطبیقی درون خطی در مقایسه با بنرهای تطبیقی لنگری، بنرهای بزرگتر و بلندتری هستند. ارتفاع آنها متغیر است و میتوانند به اندازه صفحه نمایش دستگاه باشند. بنرهای تطبیقی درون خطی برای برنامههایی که تبلیغات بنری را در محتوای قابل پیمایش قرار میدهند، نسبت به بنرهای تطبیقی لنگری توصیه میشوند. برای جزئیات بیشتر به بنرهای تطبیقی درون خطی مراجعه کنید.portrait به افقی، عرض موجود برای بنر نیز اغلب تغییر میکند. برای اطمینان از اینکه تبلیغی با اندازه مناسب برای طرح جدید نمایش میدهید، درخواست یک بنر جدید کنید. اگر عرض بنر شما ثابت است، یا اگر محدودیتهای طرح شما میتواند تغییر اندازه را تحمل کند، از این مرحله صرف نظر کنید. 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 نیز عمل میکند، در این صورت، ویژگی delegate را میتوان روی self تنظیم کرد. bannerView.delegate = self
banner.delegate = context.coordinator
bannerView.delegate = self;
GADBannerViewDelegate به عنوان اختیاری علامت گذاری شده اند، بنابراین شما فقط باید متدهایی را که می خواهید پیاده سازی کنید. این مثال هر متد را پیاده سازی کرده و پیامی را در کنسول ثبت می کند: 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");
}
GADBannerView به سلسله مراتب نماها را تا پس از دریافت تبلیغ به تأخیر بیندازید. میتوانید این کار را با گوش دادن به رویداد bannerViewDidReceiveAd: انجام دهید: 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: برای متحرکسازی یک بنر تبلیغاتی پس از دریافت آن استفاده کنید، همانطور که در مثال زیر نشان داده شده است: 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 متدهایی برای اطلاعرسانی به شما در مورد رویدادها دارد، مانند زمانی که یک کلیک باعث نمایش یا رد یک overlay میشود. اگر میخواهید ردیابی کنید که آیا این رویدادها به دلیل تبلیغات بودهاند یا خیر، برای این متدهای GADBannerViewDelegate ثبتنام کنید.UIViewController یا UIApplication باشد. در اینجا جدولی وجود دارد که متدهای معادل iOS را که همزمان با متدهای GADBannerViewDelegate فراخوانی میشوند، نشان میدهد: متد GADBannerViewDelegate روش iOS bannerViewWillPresentScreen: viewWillDisappear: bannerViewWillDismissScreen: viewWillAppear: bannerViewDidDismissScreen: viewDidAppear: