2010-09-02 9 views
9

He creado mi aplicación de esta manera y todo parece funcionar más o menos. Después de escuchar acerca de la notoriamente baja tasa de relleno de iAd, decidí que este sería el mejor método, pero traté de buscar en Google y no pude encontrar ningún registro de alguien más implementando anuncios en su aplicación de esta manera. ¿Esto viola los TOS?Uso de iAd como red publicitaria predeterminada, y AdMob si iAd falla

Respuesta

10

¿Por qué no utilizar Adwhirl. Su gran SDK que le permite hacer exactamente lo que necesita. Puede establecer configuraciones de prioridad para diferentes redes publicitarias que pueden cambiarse sobre la marcha si encuentra que una red funciona mejor que otras, etc.

Maneja toda la lógica para la que se mostrará el anuncio según la falla o prioridad de la solicitud sin que necesite preocuparse por eso Todo lo que hace es crear una vista de adwhirl y solicitar un anuncio. Adwhirl hace el resto, incluida la actualización adecuada. Si un iAd falla por primera vez, y luego muestra un admob, pero el siguiente iAd se carga con éxito, se mostrará en lugar del admob, suponiendo que establezca iAd como una red de mayor prioridad.

http://adwhirl.com

+0

Esta es la solución que decidí, pero estoy teniendo algunos problemas después de implementar AdWhirl. Lo más importante es que la aplicación solicitará un anuncio en el inicio y solo no podrá realizar otra solicitud. A menudo carga la aplicación y la aplicación nunca llegará a adWhirlDidReceiveAd: ni adWhirlDidFailToReceiveAd :. Además, mis solicitudes de iAd siempre fallan, por lo que ni siquiera puedo ver el marco publicitario que necesito para finalizar visualmente la integración de los anuncios en mi aplicación. –

+0

¿Cómo está tu fillrate con iAds? ¿Estás recibiendo algunos anuncios? – Goles

+0

adwirl aún no es compatible con ARC. –

1

Tengo iAds y Admob.

Recomiendo encarecidamente cargar primero un iAd y si no obtiene un admob de Ad use. iAd tiene un ECPM mucho mayor que admob si obtiene un anuncio. Recuerde que iAd se actualiza cada 30 segundos, por lo que se llamará varias veces al método did not get.

Mi aplicación ha sido aprobada, puede obtenerla, Octopus Oracle. http://kurl.ws/Ay

+0

Genial, gracias por esa información. Aparecieron dos avisos admob en la pantalla y pude resolverlo después de darme cuenta de que se llamaba el método de falla de ai cada 30 segundos. ¿Cómo se maneja el caso en el que iAd inicialmente falla, usted coloca con éxito un anuncio admob en la vista y, a continuación, iAd lo logra después de eso. ¿Puede ocurrir tal situación cada vez? –

+0

Creo que oculto la vista de iAd, por las dudas. Lo que probablemente haría es volver a colocar la vista iAd y eliminar admob. iAd le hará ganar un poco más de dinero. –

3

está ocultando la ADBannerView mediante el establecimiento visible para NO? Con ADBannerView, si establece visible a NO, deja de solicitar anuncios. Para "ocultar" ADBannerView, necesita traducirlo a algún lugar fuera de la pantalla.

1

Puede utilizar AdWhirl y su mejor tutorial está aquí Tutorial

0

que terminó con esta estrategia:

en primer lugar he creado 2 salidas del guión gráfico, uno para el ADBannerView y otro para el GADBannerView

@IBOutlet weak var iadBannerView: ADBannerView! 
@IBOutlet weak var adMobBannerView: GADBannerView! 

En su viewDidLoad se puede hacer esto:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.iadBannerView.hidden = true 
    self.adMobBannerView.hidden = true 
    self.iadBannerView.delegate = self 
    NSTimer.scheduledTimerWithTimeInterval(35, target: self, selector: Selector("dispalyGoogleBanner"), userInfo: nil, repeats: false) 
} 

Así que aquí ha ocultado ambos banners (si prefiere yo puedes hacerlo directamente en el guión gráfico). luego espera 35 segundos antes para mostrar los anuncios de google. Entonces, antes de mostrar los anuncios de google, básicamente quiere ver si iAD está disponible.

Este es el método utilizado para mostrar la bandera Google:

//MARK: - Google banner 
    func dispalyGoogleBanner() { 
     if !self.isDisplayIAD && !idDisplayADMob { 
     idDisplayADMob = true 
     self.adMobBannerView.adUnitID = kAdUnitID 
     self.adMobBannerView.hidden = false 
     self.adMobBannerView.rootViewController = self 
     self.adMobBannerView.loadRequest(GADRequest()) 
     } 
    } 

por lo que antes de mostrar el titular de Google, nos aseguramos de que la bandera iAD y la bandera de AdMob no se muestran todavía. Si ese es el caso, entonces podemos enviar la solicitud para mostrar el banner de ADMob.

Aquí mi aplicación de la ADBannerViewDelegate

func bannerViewDidLoadAd(banner: ADBannerView!) { 
     self.iadBannerView = banner 
     self.iadBannerView.hidden = false 
     self.adMobBannerView.hidden = true 
     idDisplayADMob = false 
     self.view.layoutIfNeeded() 
    } 

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError 
     error: NSError!) { 
      println(error) 
      isDisplayIAD = false 
      self.iadBannerView.hidden = true 
      self.dispalyGoogleBanner() 
    } 

    func bannerViewActionDidFinish(banner: ADBannerView!) { 
     self.iadBannerView = banner 
     self.iadBannerView.hidden = true 
     isDisplayIAD = false 
     dispalyGoogleBanner() 
    } 

    func bannerViewWillLoadAd(banner: ADBannerView!) { 
     //remove the google banner if displayed 
     isDisplayIAD = true 
     self.iadBannerView.hidden = false 
     self.adMobBannerView.hidden = true 
     idDisplayADMob = false 
     self.view.layoutIfNeeded() 
    } 

lo que básicamente hice en estos delegados Es para comprobar si la bandera iAD está disponible, si ese es el caso entonces me oculta la bandera de AdMob. Si el iAD finalizó para mostrar los anuncios, llamaré al banner de ADMob, vea bannerViewActionDidFinish

Puede adaptar fácilmente esta lógica a su implementación.

Cuestiones relacionadas