Реклама на основе кликов в мобильном приложении — отличный способ заработать на бесплатных или недорогих приложениях. В то время как существует множество вариантов, многие разработчики iOS склонны использовать платформу iAds по ряду причин, включая простоту, эстетичность и высокую цену за тысячу показов.
Хотя iAds великолепен, это не совсем серебряная пуля, которую вы можете искать. Поскольку iAds обслуживает очень специфический контент от поставщиков, которые должны иметь очень специфический контракт с Apple, они часто не выполняют в определенных ситуациях. Эти ситуации могут быть в геолокации, в которой реклама не размещалась, в зарубежных странах или просто из-за отсутствия издателей в течение определенного периода времени.
В производственной версии приложения Caterpillar, которое я создал, я реализовал iAds и заметил, что скорость заполнения падает где-то в диапазоне 75%. Это неплохо , однако AdMob обычно находится в диапазоне 98%! Это подводит меня к цели этого поста.
Разве не было бы замечательно иметь гибридное решение для заполнения рекламных мест объявлениями AdMob, когда iAds не доставляется?
Шаг 1. Настройка iAds
Поскольку это не учебник по iAds, мы начнем с очень простой настройки iAds. Это будет вид баннера в верхней части обычного UIView
. Я начал с одного шаблона проекта представления и добавил следующий код в файл ViewController.h
:
1
2
3
4
5
6
7
8
|
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@interface ViewController : UIViewController<ADBannerViewDelegate>
@property (nonatomic, strong) ADBannerView *bannerView;
@end
|
Это просто объявление нашего рекламного баннера, который будет отображаться в представлении. Теперь давайте посмотрим на код для отображения рекламного баннера внутри ViewController.m
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#import «ViewController.h»
@implementation ViewController
@synthesize bannerView = _bannerView;
— (void)viewDidLoad
{
[super viewDidLoad];
self.bannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
[self.bannerView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:
ADBannerContentSizeIdentifierPortrait, nil]];
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
[self.bannerView setDelegate:self];
[self.view addSubview:self.bannerView];
}
— (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
NSLog(@»iad failed»);
}
@end
|
Это загружает ADBannerView в верхней части окна, установленного в портретном режиме. На данный момент, когда iAds не загружается, он просто выводит «iAd Failed» в журнал, как вы можете видеть в bannerView:didFailToReceiveAdWithError
делегата bannerView:didFailToReceiveAdWithError
. Мы будем использовать этот метод делегата, чтобы заменить баннер iAd баннером AdMob.
Шаг 2. Настройка AdMob
Начните с загрузки iOS AdMob SDK здесь:
http://code.google.com/mobile/ads/download.html
Распакуйте его куда-нибудь на диск и перетащите каждый файл в ваш проект. Когда вас спросят, хотите ли вы скопировать файлы, отметьте «да».
Есть также несколько библиотек, в которые вы должны перейти, чтобы использовать AdMob:
- AudioToolbox
- MessageUI
- Конфигурация системы
- CoreGraphics
После того, как вы это сделаете, вы должны быть готовы к внедрению рекламы AdMob.
Шаг 3. Заполните iAd Spot AdMob
Давайте начнем с пересмотра ViewController.h
и обновления кода, чтобы он выглядел так:
01
02
03
04
05
06
07
08
09
10
|
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
#import «GADBannerView.h»
@interface ViewController : UIViewController<ADBannerViewDelegate, GADBannerViewDelegate>
@property (nonatomic, strong) ADBannerView *bannerView;
@property (nonatomic, strong) GADBannerView *admobBannerView;
@end
|
Все, что мы здесь сделали, — сказали нашему классу, что он является делегатом GADBannerView
и создали свойство для GADBannerView
. Также убедитесь, что вы @synthesize
admobBannerView в файле ViewController.m
.
Последняя часть — заменить iAd баннером AdMob, если он не загружается. Это можно сделать, добавив некоторый код в метод bannerView:didFailToReceivedAdWithError
в ViewController.m
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
— (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
// 1
[self.bannerView removeFromSuperview];
// 2
_admobBannerView = [[GADBannerView alloc]
initWithFrame:CGRectMake(0.0,0.0,
GAD_SIZE_320x50.width,
GAD_SIZE_320x50.height)];
// 3
self.admobBannerView.adUnitID = @»a14ec3f0a2028f2″;
self.admobBannerView.rootViewController = self;
self.admobBannerView.delegate = self;
// 4
[self.view addSubview:self.admobBannerView];
[self.admobBannerView loadRequest:[GADRequest request]];
}
|
Итак, вот что происходит:
- Мы удаляем баннер iAd из текущего представления. Это больше не понадобится на время этой сессии. Вы можете получить хитрость и попытаться сделать больше запросов к iAds, но в этом нет особой необходимости.
- Здесь мы создаем экземпляр рекламного баннера AdMob, чтобы он дал нам баннер размером 320 на 50 и разместил его в верхней части экрана.
- Это код настройки для баннера AdMob (не стесняйтесь использовать идентификатор моего рекламного блока;)).
- Наконец, мы добавляем баннер AdMob к нашему представлению и сообщаем ему о необходимости получения рекламы.
Шаг 4: Тестирование
Стоит отметить, что вы никогда не увидите сбой в работе iAds в симуляторе. Возможно, если бы у вас был отключен Интернет, вы могли бы, но тогда вы бы даже не смогли получить рекламу AdMob. Лучший способ проверить это просто вызвать метод bannerView:didFailToReceiveAdWithError
изнутри viewDidLoad
:
1
|
[self bannerView:self.bannerView didFailToReceiveAdWithError:nil];
|
Это смоделирует сбой iAd и выполнит код для получения и показа рекламы AdMob.
Шаг 5: Заключительные шаги
Теперь, когда у нас есть это двойное решение, очень маловероятно, что пользователь не увидит рекламу. Однако все еще существует небольшая вероятность того, что iAd и AdMob потерпят неудачу. В этом случае мне нравится давать пользователю перерыв и не показывать ему ничего. Вроде как халява на день;). Итак, последний метод будет вызван, когда AdMob не удастся загрузить.
1
2
3
|
— (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error {
[self.admobBannerView removeFromSuperview];
}
|
Как и следовало ожидать, при сбое AdMob мы удаляем его вид с экрана, и пользователь побеждает!
Заворачивать
Я надеюсь, что вы нашли этот урок полезным для того, чтобы избавить ваших пользователей от усилий по разработке. Хотя я использовал AdMob, вы можете использовать этот же шаблон проектирования для объединения / объединения любой рекламной сети, с которой вы предпочитаете работать. Вы можете скачать исходный код этого руководства в самом верху.
Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь оставлять их здесь или писать мне в Twitter .
Удачного кодирования!