iAds anuncios intersticiales en iPhone?
ipad interstitial (2)
Mi respuesta original está empezando a envejecer, así que aquí hay una nueva implementación de Swift:
Esta implementación utiliza una ADInterstitialPresentationPolicy
Manual
para que podamos presentar nuestros intersticiales a nuestros propios intervalos. Cuando se presenta manualmente su intersticial, no se carga con su propio botón de cierre para descartarse. Entonces, lo que he hecho es crear una UIView
para presentar el intersticial y usar los métodos de delegado intersticial para descartar la UIView
. La incoherencia con la recepción de un anuncio de la red iAd aún surge durante las pruebas. A veces recibe un anuncio, a veces no se carga, lo que nos permite solicitar un anuncio nuevo y, a veces, no sucede nada. Esto parece ser la naturaleza de los intersticiales de 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()
}
Mi desarrollador y yo previamente habíamos intentado que los anuncios intersticiales se cargaran en iPhone y iPad, sin embargo, solo conseguimos que esto funcionara en iPad.
Durante nuestras pruebas, descubrimos que los intersticiales no eran compatibles con iPhone, pero desde el lanzamiento de iOS7, algunas personas ahora dicen que esto es posible.
Sin embargo no puedo encontrar ninguna documentación decente sobre esto. Esta pregunta de la Pila me ha vuelto a preguntar, aunque la integración intersticial iAd & Admob en iPhone
Entonces, ¿son posibles los intersticiales de pantalla completa en iPhone usando iAds?
También he estado esperando los anuncios intersticiales para iPhone de iAd. Finalmente lo tengo implementado en una de mis aplicaciones y se está ejecutando y mostrando anuncios de prueba muy bien. La aplicación está actualmente en revisión y actualizaré mi respuesta una vez que se apruebe, y puedo probar si se están publicando algunos anuncios. Mientras tanto, aquí está el código que utilicé para implementar intersticiales de 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");
}
Acabo de llamar -(void)showFullScreenAd
después de que el usuario realice una determinada acción. Para obtener más información, consulte la Referencia de adiciones de iIViewController iAd.
EDITAR: 01/03/14 La actualización de la aplicación fue aprobada y ha estado activa por 12 horas. Todavía no he recibido ningún iAds intersticial a partir de este momento. Puede deberse a la falta de inventario para anuncios intersticiales en iPhone o puede tener algo que ver con el siguiente mensaje que he recibido en mi módulo iAd en iTunes Connect. El mensaje lee
Cuando envíe su aplicación, [nombre de la aplicación], para su aprobación, iAd también la revisará para su uso en la Red de aplicaciones a fin de determinar si es apropiada para recibir anuncios de los anunciantes de iAd. Una vez que se apruebe su aplicación, estará listo para comenzar a obtener ingresos por los anuncios que se publican en su aplicación.
Nunca había recibido este mensaje, normalmente recibo el mensaje "Su aplicación ahora es elegible para recibir anuncios" tan pronto como se publique la actualización en la App Store. Se debe a la nueva implementación de anuncios intersticiales en mi aplicación o Apple ha actualizado algunos de sus procedimientos de iAd.
Volveré a actualizar la respuesta cuando empiece a recibir iAds intersticiales. Mientras tanto, puedes probarlo tú mismo en mi aplicación +Quotes . El código anterior se invoca y un anuncio intersticial debe mostrarse una vez que un usuario comparte a través de Facebook dentro de la aplicación.
EDITAR: 01/07/14 Contacté directamente a iAd y recibí una respuesta hoy
Hola Daniel, las tasas de llenado iniciales reflejarán el reciente lanzamiento de intersticiales en iOS 7. Gracias por su paciencia mientras aumentamos la publicación de anuncios. Si aún no lo ha hecho, le recomendamos que integre los banners iAd estándar y horizontal en su aplicación para aprovechar todos los tipos de inventario de publicidad disponibles. Finalmente, para futuras referencias, cuando envíe su aplicación para su aprobación, iAd también la revisará para determinar si es apropiada para recibir anuncios de los anunciantes de iAd. Por lo tanto, puede tomar algunos días para que su nueva aplicación habilitada para iAd comience a recibir impresiones de anuncios. Saludos cordiales, Support iAd App Network Support
Por lo tanto, los iAds para iPhone intersticiales funcionan con iOS 7.0 y superior, pero actualmente tienen una tasa de llenado baja.