2010-09-02 21 views
9

J'ai construit mon application de cette façon et tout semble fonctionner plus ou moins. Après avoir entendu parler du taux de remplissage de l'iAd notoirement bas, j'ai décidé que ce serait la meilleure méthode, mais j'ai essayé googling et je ne pouvais pas trouver le record de quelqu'un d'autre mise en œuvre des annonces dans leur application comme ça. Est-ce que cela viole les TOS?Utilisation d'iAd comme réseau publicitaire par défaut, et AdMob si iAd échoue

Répondre

10

Pourquoi ne pas utiliser Adwhirl. Son super SDK qui vous permet de faire exactement ce dont vous avez besoin. Vous pouvez définir les paramètres de priorité pour les différents réseaux publicitaires qui peuvent être modifiés à la volée si vous trouvez un réseau de meilleurs résultats que d'autres, etc.

Il gère toute la logique pour laquelle annonce à afficher en fonction en cas d'échec de la demande ou la priorité sans que vous ayez s'inquiéter à ce sujet. Il vous suffit de créer une vue adwhirl et de demander une annonce. Adwhirl fait le reste, y compris rafraîchissant approprié. Si un iAd échoue la première fois, puis affiche un admob, mais que l'iAd suivant se charge correctement, il s'affiche à la place de l'admob, en supposant que vous définissez iAd comme un réseau de priorité supérieure.

http://adwhirl.com

+0

C'est la solution que j'ai choisie, mais j'ai quelques problèmes après avoir implémenté AdWhirl. Plus important encore, l'application va demander une annonce au démarrage et échouer seulement pour ne jamais faire une autre demande! Souvent, je charge l'application et l'application n'arrivera jamais à adWhirlDidReceiveAd: ni à adWhirlDidFailToReceiveAd :. En outre, mes demandes d'iAd échouent toujours, donc je ne peux même pas voir le cadre d'annonce dont j'ai besoin pour visuellement terminer l'intégration des annonces dans mon application! –

+0

Comment va votre filleul avec iAds? Recevez-vous des annonces? – Goles

+0

adwirl ne supporte pas encore ARC. –

1

J'ai iAds et Admob.

Je recommande fortement de charger un iAd en premier et si vous ne recevez pas d'annonce, utilisez admob. iAd a un ECPM beaucoup plus élevé que l'admob si vous recevez une annonce. Rappelez-vous que iAd est actualisé toutes les 30 secondes, de sorte que la méthode de publicité n'a pas été appelée plusieurs fois.

Mon application a été approuvé, vous pouvez l'obtenir, Octopus Oracle. http://kurl.ws/Ay

+0

Excellent, merci pour cette information. Deux annonces admob apparaissaient à l'écran et j'ai pu le résoudre après m'être rendu compte que la méthode iad fail était appelée toutes les 30 secondes. Comment gérez-vous le cas où iAd échoue initialement, vous placez avec succès une annonce admob dans la vue, puis iAd réussit quelque temps après cela. Une telle situation peut-elle arriver? –

+0

Je pense que je cache la vue iAd, juste au cas où. Ce que je ferais probablement est de remettre la vue d'iAd et enlever l'admob. iAd vous fera gagner un peu plus d'argent. –

3

cachez-vous le ADBannerView en mettant visible NO? Avec ADBannerView, si vous définissez visible à NO, il cesse de demander des annonces. Pour "cacher" l'ADBannerView, vous devez le traduire hors de l'écran.

1

Vous pouvez utiliser AdWhirl et son meilleur tutoriel est ici Tutorial

0

J'ai fini avec cette stratégie:

d'abord tout ce que j'ai créé 2 sorties du story-board, un pour le ADBannerView et un autre pour le GADBannerView

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

Dans votre viewDidLoad vous peut faire ceci:

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) 
} 

Alors ici vous avez caché les deux bannières (si vous préférez yo vous pouvez le faire directement dans le storyboard). alors vous attendez 35 secondes avant d'afficher les annonces google. Donc, avant d'afficher les annonces Google, vous voulez essentiellement voir si elle est disponible.

c'est la méthode utilisée pour afficher la bannière 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()) 
     } 
    } 

donc avant d'afficher la bannière Google, nous nous assurons que la bannière et iAD la bannière AdMob ne sont pas encore installés. Si c'est le cas, nous pouvons envoyer la demande d'affichage de la bannière ADMob.

Voici ma mise en œuvre du 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() 
    } 

ce que je l'ai fait essentiellement sur ces délégués, il est pour vérifier si la bannière iAD il est disponible, si que c'est le cas alors je vais caché la bannière AdMob. Si le iAD a fini d'afficher les publicités, alors j'appelle la bannière ADMob voir bannerViewActionDidFinish

Vous pouvez facilement adapter cette logique à votre implémentation.