Межстраничные объявления iAds на iPhone?

Ранее мы с разработчиком пытались загружать межстраничные рекламные объявления на iPhone и iPad, но только удалось заставить это работать на iPad.

Во время нашего тестирования мы обнаружили, что межстраничные объявления не поддерживаются на iPhone, но с момента выпуска iOS7 некоторые люди говорят, что это возможно.

Однако я не могу найти достойную документацию по этому вопросу. Этот вопрос с Stack снова заставил меня задуматься, но iAd и Admob Interstitial Integration на iPhone

Итак, возможны ли межстраничные интерполяции на iPhone с помощью iAds?

Ответы

Ответ 1

Я также ожидал межстраничные объявления для iPhone от iAd. Я, наконец, реализовал его в одном из моих приложений, и он работает и показывает тестовые объявления. Приложение в настоящее время находится на рассмотрении, и я обновляю свой ответ после его утверждения, и я могу проверить, обслуживаются ли какие-либо фактические объявления. В то же время, вот код, который я использовал для внедрения iAd-межстраничных объявлений:

ViewController.h

@interface ViewController : UIViewController <ADInterstitialAdDelegate> {
    ADInterstitialAd *interstitial;
    BOOL requestingAd;
}

-(void)showFullScreenAd;

ViewController.m

-(void)viewDidLoad {
    requestingAd = NO;
}

// Interstitial iAd
-(void)showFullScreenAd {
    // Check if already requesting ad
    if (requestingAd == NO) {
        [ADInterstitialAd release];
        interstitial = [[ADInterstitialAd alloc] init];
        interstitial.delegate = self;
        self.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
        [self requestInterstitialAdPresentation];
        NSLog(@"interstitialAdREQUEST");
        requestingAd = YES;
    }
}

-(void)interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error {
    interstitial = nil;
    [interstitialAd release];
    [ADInterstitialAd release];
    requestingAd = NO;
    NSLog(@"interstitialAd didFailWithERROR");
    NSLog(@"%@", error);
}

-(void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd {
    NSLog(@"interstitialAdDidLOAD");
    if (interstitialAd != nil && interstitial != nil && requestingAd == YES) {
        [interstitial presentFromViewController:self];
        NSLog(@"interstitialAdDidPRESENT");
    }
}

-(void)interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd {
    interstitial = nil;
    [interstitialAd release];
    [ADInterstitialAd release];
    requestingAd = NO;
    NSLog(@"interstitialAdDidUNLOAD");
}

-(void)interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd {
    interstitial = nil;
    [interstitialAd release];
    [ADInterstitialAd release];
    requestingAd = NO;
    NSLog(@"interstitialAdDidFINISH");
}

Я просто вызываю -(void)showFullScreenAd после того, как пользователь выполнит определенное действие. Для получения дополнительной информации см. Справочник по дополнениям iAd UIViewController

РЕДАКТИРОВАТЬ: 01/03/14 Обновление приложения было одобрено и уже 12 часов. На данный момент я до сих пор не получил никаких межсайтовых iAds. Это может быть из-за отсутствия инвентаря для межстраничных объявлений на iPhone или, возможно, что-то связано со следующим сообщением, которое я получил в моем модуле iAd в iTunes Connect. Сообщение читает

Когда вы отправляете свое приложение, [имя приложения] для утверждения, оно также будет проверено iAd для использования в сети приложений, чтобы определить его приемлемость для получения рекламы от рекламодателей iAd. Как только ваше приложение будет одобрено, вы будете готовы начать зарабатывать доход для объявлений, которые запускаются в вашем приложении.

Я никогда не получал это сообщение раньше, я обычно получаю сообщение "Ваше приложение теперь имеет право на получение рекламы", как только обновление будет выпущено в App Store. Это либо из-за новой реализации межстраничных объявлений в моем приложении, либо Apple обновила некоторые из своих процедур iAd.

Будет обновлен ответ снова, если и когда я начну получать межсайтовые iAds. Тем временем вы можете протестировать его самостоятельно в своем приложении +Quotes. Вышеупомянутый код вызывается, а рекламное объявление должно показывать, как только пользователь делится через Facebook в приложении.

РЕДАКТИРОВАТЬ: 01/07/14 Свяжитесь с iAd напрямую и получил ответ сегодня

Привет, Даниэль, Начальные ставки заполнения будут отражать недавний запуск межстраничных объявлений на iOS 7. Благодарим вас за терпение, так как мы увеличиваем показ объявлений. Если вы еще этого не сделали, мы рекомендуем вам интегрировать стандартные портреты и ландшафтные баннеры iAd в приложение, чтобы использовать все доступные типы рекламных ресурсов. Наконец, для дальнейшего использования, когда вы отправляете заявку на одобрение, она также будет проверена iAd, чтобы определить ее приемлемость для получения рекламы от рекламодателей iAd. Поэтому для вашего нового приложения, включенного iAd, может потребоваться несколько дней, чтобы начать получать показы объявлений. С наилучшими пожеланиями,  Поддержка сети приложений iAd

Итак, межстраничные iAds для iPhone работают с iOS 7.0 и выше, но в настоящее время имеют низкую скорость заполнения.

Ответ 2

Мой первоначальный ответ начинает уходить, поэтому здесь новая реализация Swift:

В этой реализации используется Manual ADInterstitialPresentationPolicy, поэтому мы можем представлять наши межстраничные объявления на наших собственных интервалах. При ручном представлении своего межстраничного объявления он не загружается с помощью своей кнопки закрытия, чтобы отклонить себя. Итак, что я сделал, создается UIView, чтобы представить интерстициальный вход и использовал методы междоузлий делегата, чтобы отклонить UIView. Несоответствие при получении объявления из сети iAd по-прежнему возникает при тестировании. Иногда вы получаете объявление, иногда оно не загружается, что позволяет нам запрашивать новое объявление, и иногда ничего не происходит вообще. Это похоже на природу междоузлий iAd.

import UIKit
import iAd // Import iAd

class ViewController: UIViewController, ADInterstitialAdDelegate { // Include the delegate

    var iAdInterstitial = ADInterstitialAd() // Our ad
    var iAdInterstitialView = UIView() // View to present our ad in
    var adLoaded = false // Bool to keep track if an ad is loaded or not

    override func viewDidLoad() {
        super.viewDidLoad()
        setupAd()
    }

    func setupAd() {
        // Set presentation to manual so we can choose when to present the interstitial
        // Setting this will also fetch an interstitial ad for us
        self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Manual
        iAdInterstitial.delegate = self // Set the delegate

        // Make our view the same size as the view we will be presenting in
        iAdInterstitialView.frame = self.view.bounds
    }

    func requestNewAd() {
        // This will fetch an ad for us
        ViewController.prepareInterstitialAds()
        println("Requesting new ad")
    }

    @IBAction func presentAdButton(sender: AnyObject) {
        if (adLoaded) {
            // We have an ad that is loaded so lets present it
            self.view.addSubview(iAdInterstitialView)
            iAdInterstitial.presentInView(iAdInterstitialView)
        }
        else {
            // No ad has been loaded
            println("Ad not loaded")
        }
    }

    func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
        // Kinda works as expected
        // Sometimes is called prematurely
        // Sometimes takes minutes after ad is dismissed to be called
        println("interstitialAdDidUnload")

        // Get new ad
        adLoaded = false
        iAdInterstitialView.removeFromSuperview()
        requestNewAd()
    }

    func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
        // Failed to load ad so lets try again
        println("didFailWithError: \(error)")
        requestNewAd()
    }

    func interstitialAdWillLoad(interstitialAd: ADInterstitialAd!) {
        // There is an ad and it has begun to download
        println("interstitialAdWillLoad")
    }

    func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {
        // We got an ad
        println("interstitialAdDidLoad")
        adLoaded = true
    }

    func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool {
        println("interstitialAdActionShouldBegin")
        return true;
    }

    func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) {
        // Done with this ad. Lets get a new one
        println("interstitialAdActionDidFinish")
        iAdInterstitialView.removeFromSuperview()
        adLoaded = false
        requestNewAd()
    }