Полноэкранные рекламные объявления
Полноэкранные рекламные объявления являются новым видом рекламы, представленной в iOS 4.3. Полноэкранные рекламные объявления реализованы ADInterstitialAd
класс.
Полноэкранные Рекламные объявления Только Доступны на iPad
Чтобы протестировать, доступны ли полноэкранные рекламные объявления, получите значение UI_USER_INTERFACE_IDIOM
макрос; если значение, возвращенное из этого макроса, UIUserInterfaceIdiomPad
, можно использовать полноэкранные рекламные объявления.
Полноэкранные рекламные понятия
Полноэкранные рекламные объявления, предоставленные iAd, имеют два случая общего использования:
Реклама выведена на экран как страница содержания, которое является коллегой к содержанию, предоставленному Вашим приложением. Как правило, это означает добавлять полноэкранное объявление к содержанию представления прокрутки.
Как переходный экран между двумя частями Вашего приложения.
Перед осуществлением добавления полноэкранных рекламных объявлений к приложению быть уверенными, что Вы понимаете ожидаемое поведение из своего приложения для каждого варианта использования, Вы намереваетесь представить в Вашем приложении. iAdInterstitialSuite выборка включает примеры обоих вариантов использования.
Представление полноэкранной рекламы как содержание
В этом варианте использования реклама выведена на экран рядом с другим содержанием, предоставленным Вашим приложением. Ваше содержание организовано в страницы размера экрана и помещено в представление прокрутки, сконфигурированное для прокрутки видимой предметной области на границах страницы. Рисунок 3-1 иллюстрирует это понятие. Представление прокрутки содержит четыре представления. В то время как четвертое представление содержит полноэкранную рекламу, три представления содержат содержимое приложения. Пользователь может пролистать влево или вправо для навигации через содержание. Если пользователь касается на iAd, реклама запускает свой богатый опыт носителей.
Когда Ваши отображения приложения полноэкранные рекламные объявления рядом с его собственным содержанием, iAd блокирует другие способы поведения в Вашем приложении только, когда пользователь принимает решение взаимодействовать с объявлением.
Представление полноэкранной рекламы как переходный экран
В этом варианте использования реклама появляется как переходный экран между двумя другими экранами, выведенными на экран Вашим приложением. Рисунок 3-2 показывает пример этого поведения. Например, игровая выборка в iAdInterstitialSuite выводит на экран рекламу после того, как проигрыватели закончат сыграть матч и прежде, чем позволить им сыграть другой матч. Когда реклама выведена на экран как переходная страница, она выведена на экран модально, который позволяет пользователю взаимодействовать с объявлением. Для продолжения на следующий экран в приложении пользователь явно касается близкой кнопки объявления.
Модель программирования для полноэкранных объявлений отличается от представлений баннера
Модель программирования для ADInterstitialAd
объект подобен тому из ADBannerView
объект, но существует несколько важных различий.
ADInterstitialAd
объект не является фактически представлением. Объект объявления управляет загрузкой его содержания, и это может создать представления для отображения объявления. Однако для отображения полноэкранного объявления приложение явно представляет рекламу. Когда Ваши отображения приложения модальная реклама, это представляет рекламу с помощью контроллера представления. Напротив, для добавления рекламы как немодальной страницы приложение создает пользовательское представление с надлежащими размерностями и добавляет, что к иерархии представления связало с целью контроллер. Затем Ваше приложение представляет объявление с помощью этого представления. iAd использует Ваше представление для хостинга содержания объявления.
Второе существенное различие между представлением баннера и полноэкранной рекламой - то, что полноэкранная реклама не циклически повторяется через новое содержание. Полноэкранный объект объявления загружает единственную рекламу; как только то содержание истекает, Ваше приложение должно выпустить объект объявления. Каждый раз, когда Ваше приложение должно показать новую рекламу, оно должно явно создать новый объект объявления.
Жизненный цикл полноэкранного объекта объявления
Рисунок 3-3 показывает процессу Ваше использование приложения для реализации полноэкранного распространения в приложении. Когда Ваше приложение создает, жизненный цикл начинается ADInterstitialAd
объект и наборы его делегат. Делегат необходим, потому что объект объявления отправляет сообщения делегату в критических точках в его жизненный цикл. Рисунок 3-3 показывает большинство существенных критических методов делегата.
После того, как объект объявления создается, он автоматически загружает рекламу с iAd Сети приложения. Когда объект объявления заканчивает загружать рекламу, он сигнализирует Вашего делегата. Ваше приложение берет загруженное объявление и представляет его пользователю. Фактический процесс Ваше использование приложения для представления рекламы варьируется в зависимости от того, хотите ли Вы представить его модально или как немодальную страницу.
Если касания объявление, Вашему приложению сообщают так, чтобы это могло приостановить любые действия, которые могли бы вмешаться в рекламу — эта процедура подобна процедуре, которую представление баннера использует для информирования приложения интересов пользователя. После того, как Ваше приложение приостанавливает свои действия, объект объявления загружает интерактивную рекламу из iAd Сети приложения и выводит на экран его пользователю. После того, как пользователь заканчивает взаимодействовать с объявлением, объект объявления уведомляет Вашего делегата так, чтобы Ваше приложение могло возобновить действия, которые это приостановило.
В некоторый момент после создания объекта объявления, содержание объявления истекает. Содержание может истечь в разное время, в зависимости от того, как объявление представлено и как пользователь взаимодействует с Вашим приложением. Когда содержание объекта объявления разгружено, Вашего делегата вызывают. Ваше приложение требуется, чтобы выпускать объект объявления, но это часто выполняет другие задачи в это время. Например, пример ADGame, найденный в iAdInterstitialSuite, создает новый объект объявления запустить цикл снова, в то время как пример ADMagazine удаляет, смещает другие страницы содержания для заполнения пространства, освобожденного представлением объявления.
Затем, Вы изучите, как реализовать каждый шаг схемы выше.
Создание объекта объявления
Перечисление 3-1 показывает общую реализацию для создания полноэкранного объекта объявления. Нет никаких других свойств на объекте объявления сконфигурировать.
Перечисление 3-1 , Создающее полноэкранный объект объявления
interstitial = [[ADInterstitialAd alloc] init]; |
interstitial.delegate = self; |
После того, как объект объявления создается, он автоматически начинает загружать рекламу с iAd Сети приложения. Ваше приложение определяет, загрузил ли объект объявления успешно свое содержание одним из двух способов:
Ваше приложение может считать объект объявления
loaded
свойство, утверждающее, имеет ли объект загруженную рекламу. Регулярно не опрашивайте это значение, чтобы определить, готово ли объявление быть представленным. Однако для Вашего приложения может быть полезно проверить значение этого свойства в данный момент, это хочет перейти на новый экран содержания, особенно когда отображение рекламы является дополнительным. Например, пример ADGame в iAdInterstitialSuite тестируетloaded
свойство на объекте объявления после соответствия заканчивается. Если значение этого свойстваYES
, тогда это выводит на экран объявление. Если значениеNO
, тогда игровое распространение пропусков и начинает новый матч.Ваш делегат может реализовать
interstitialAdDidLoad:
метод, который будет информирован, как только объект объявления загружает содержание объявления. Как правило, Ваш метод делегата представляет объявление. Реализация метода делегата лучше всего используется, когда Вы хотите вставить объявление в содержание своего приложения, как только загружается объявление. Вы не должны использовать этот метод для непосредственного представления модального объявления пользователю, поскольку это прервало бы задачу, пользователь выполнял в данный момент загруженное содержание объявления.
Представление объявления
После того, как объявление загружает свое содержание, можно представить рекламу пользователю. Процесс, который Вы используете, зависит от того, планируете ли Вы представить его модально или как немодальную страницу содержания.
Представление объявления модально
Объявление представлено модально объектом контроллера представления. Ваше приложение создает контроллер представления и вызывает объект объявления presentFromViewController:
метод, передающий в контроллере представления как единственный параметр. Перечисление 3-2 показывает минимальную реализацию этого поведения. На практике, потому что объявление выведено на экран модально поверх Вашего приложения, Ваше приложение может хотеть приостановить другие действия теперь, прежде, чем представить объявление.
Перечисление 3-2 , представляющее объявление модально
if (interstitial.loaded) |
{ |
[interstitial presentFromViewController:self]; |
} |
После представления объявления Ваш контроллер представления больше не является самым верхним контроллером представления; объект объявления создает контроллер представления и использует его для представления объявления. Контроллер представления объявления демонтирован после того, как пользователь отклоняет объявление.
Представление объявления как страница содержания
Ваше приложение представляет объявление modelessly путем создания представления для хостинга объявления. Этот объект представления должен соблюсти следующие правила:
Представление должно содержаться в иерархии представления объекта контроллера представления; это ограничение идентично поведению, требуемому представлений баннера.
Ширина представления должна равняться ширине экрана.
Высота представления должна быть не меньшей, чем 113 точек, меньших, чем высота экрана и не больше, чем высота экрана. Например, когда iPad находится в альбомной ориентации, высота экрана является 768 точками; представление хостинга должно поэтому быть между 655 и 768 точками в высоте, включительно.
Если Ваш контроллер представления поддерживает изменения ориентации, представление должно быть изменено для соответствия новой ориентации.
Представление должно быть способно к хостингу подпредставлений.
Перечисление 3-3 показывает типичную реализацию. Это использует индекс для новой страницы для вычисления кадра страницы, выделяет представление с тем кадром и добавляет его к представлению прокрутки. Затем это вызывает объявление presentInView:
метод для соединения объявления с новым представлением.
Перечисление 3-3 , Добавляющее страницу объявления к представлению прокрутки
CGRect interstitialFrame = scrollView.bounds; interstitialFrame.origin = CGPointMake(interstitialFrame.size.width * index, 0); UIView *view = [[UIView alloc] initWithFrame:interstitialFrame]; [scrollView addSubview:view]; |
[interstitial presentInView:view]; |
Обработка взаимодействия с пользователем с объявлением
Когда пользователь касается на объявлении, оно инициировало действие. Поведение идентично тому из представления баннера.
Начало рекламного действия
Прежде чем объявление инициировало действие, оно вызывает делегата interstitialAdActionShouldBegin:willLeaveApplication:
метод. Ваш метод делегата выполняет две задачи:
Это решает, позволить ли действию быть инициированным.
Если действие покроет пользовательский интерфейс Вашего приложения, этот метод паузы какие-либо действия, требующие взаимодействия с пользователем.
Ваш делегат должен возвратиться YES
от этого метода, если это хочет позволить действию быть инициированным. Это может препятствовать тому, чтобы действие было инициировано путем возврата NO
. Ваше приложение должно всегда позволять действиям быть инициированными, если оно не может безопасно сделать так.
Если
willLeave
параметрYES
, тогда Ваше приложение перемещено в фон после того, как это возвратится из этого метода делегата. Этот процесс описан в Определении Основанной на документе Модели данных.Если
willLeave
параметрNO
, iAd собирается покрыть пользовательский интерфейс приложения после того, как это возвратится из этого метода делегата. Ваше приложение должно отключить звуки, анимации или другие действия, требующие взаимодействия с пользователем. Например, игра в реальном времени должна приостановить геймплей прежде, чем позволить действию быть инициированным.
Перечисление 3-4 показывает структуру для того, как Ваше приложение должно реализовать этот метод делегата:
Перечисление 3-4 , Позволяющее действие быть инициированным
- (BOOL)interstitialAdActionShouldBegin:(ADInterstitialAd *)banner willLeaveApplication:(BOOL)willLeave |
{ |
NSLog(@"Interstitial ad is beginning an ad action"); |
BOOL shouldExecuteAction = [self allowActionToRun]; // your app implements this method |
if (!willLeave && shouldExecuteAction) |
{ |
// insert code here to suspend any services that might conflict with the advertisement |
} |
return shouldExecuteAction; |
} |
Завершение рекламного действия
Если полноэкранное объявление вывело на экран богатое объявление носителей в Вашем приложении, это вызывает Вашего делегата interstitialAdActionDidFinish:
метод после объявления заканчивается. Когда действие запустилось, Ваша реализация этого метода должна восстановить любые службы, приостановленные Вашим приложением.
Отмена рекламного действия
Когда полноэкранное объявление выполняет свое действие, Ваше приложение продолжает получать события. Ваше приложение может читать actionInProgress
свойство объявления возражает, чтобы определить, выполняется ли действие. В то время как объявление работает, Ваше приложение должно вычислить свои действия и избежать действий, требующих взаимодействия с пользователем.
Если событие имеет место, который требует внимания пользователя, можно вызвать объект объявления cancelAction
метод для отмены рекламного действия. Действие сразу заканчивается. Ваш делегат interstitialAdActionDidFinish:
не вызывается, но Ваше приложение, как все еще ожидают, перезапустит любые службы, которые оно приостановило, прежде чем действие объявления запустилось.
Объявление содержание объекта только сохраняется в течение ограниченного промежутка времени
Содержание, предоставленное объектом объявления в конечном счете, истекает. Когда это делает, объект объявления разгружает содержание и вызывает Вашего делегата. Точные обстоятельства, где содержание объявления истекает, не являются объектом управления Вашего приложения. Вот некоторые общие падежи, где может истечь содержание:
Если объект объявления встречается с ошибкой, он сообщает об ошибке Вашему приложению и затем разгружает его содержание.
Если объект объявления не представлен представлением или контроллером представления, его содержание истекает после периода 5 - 15 минут.
Если объект объявления представлен modelessly, его содержание также истекает после периода 5 - 15 минут. Если представление, связанное с объектом объявления, является внеэкранным, когда содержание истекает, объект объявления сразу разгружает свое содержание. Если реклама видима пользователю, когда содержание истекает, содержание разгружено, как только представление перемещается вне экрана.
Если объект объявления представлен модально, его содержание сразу истекает после того, как пользователь отклоняет объявление.
Перечисление 3-5 показывает минимальное поведение, которое должно реализовать Ваше приложение после того, как объект объявления разгружает свое содержание. Ваше приложение, возможно, должно выполнить дополнительные задачи. Например, модальное приложение могло бы создать новый объект объявления так, чтобы оно имело объявление для отображения в следующий раз, когда ему нужна реклама. Немодальное приложение могло бы удалить представление, разместившее объявление, и сместите другие представления для покрытия разрыва в выведенном на экран содержании. Оба из этих способов поведения продемонстрированы примерами в iAdInterstitialSuite выборке.
Перечисление 3-5 , Выпускающее объект объявления после того, как это разгружает свое содержание
- (void)interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd |
{ |
[interstitialAd release]; |
} |
Обработка полноэкранных ошибок объявления
Когда полноэкранный объект объявления встречается с ошибкой, вызовы объектов объявления делегат interstitialAd:didFailWithError:
метод, чтобы позволить Вашему приложению обрабатывать ошибку. Полноэкранные объекты объявления совместно используют коды ошибки с ADBannerView
класс. Ваше приложение не должно отображать ошибку пользователю. Минимальный ответ, когда ошибка происходит, должен выпустить объект объявления. Как со случаем, когда объект объявления разгружает свое содержание, можно хотеть выполнить другие действия.
Перечисление 3-6 , Регистрирующее полноэкранные ошибки объявления
- (void)interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error |
{ |
NSLog(@"interstitialAd <%@> recieved error <%@>", interstitialAd, error); |
[interstitialAd release]; |
} |
Большинство ошибок, возвращенных из полноэкранного объекта объявления, может быть обработано одинаково. Когда полноэкранное объявление возражает возвратам, исключение - ADErrorConfigurationError
к Вашему приложению. Ошибка конфигурации указывает, что Вы должным образом не установили iAd для своего приложения в Подключении iTunes.