2010-11-24 15 views
1

Qui utilise AdMob dans une application iPhone MonoTouch?Qui utilise AdMob dans une application iPhone MonoTouch?

Le sdk actuel, nous avons obtenu pour AdMob est admob_iphone_sdk_20100908.tar.gz

Il dispose de deux fichiers lib, mais seul le fichier NoThumb est utile en raison du bug bien connu dans l'éditeur de liens d'Apple:

libAdMobNoThumb.a (2.464.412 bytes, created on 16 september 2010 at 14:41) 

Lorsque nous lier une application de test (juste un projet, avec Windows iPhone fraîchement généré aucun changement d'aucune sorte) en utilisant des drapeaux supplémentaires suivants:

-gcc_flags "-L${ProjectDir} -lAdMobNoThumb -force_load ${ProjectDir}/libAdMobNoThumb.a" 

mTouch ne parvient lamentablement échoué mTouch sans sortie (1)

(Nous utilisons l'option -force_load au lieu de l'option -ObjC, comme il est indiqué dans la note à la fin de:

http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html) 

Le MT_SampleAdMob.zip projet de test disponible sur le blog à

http://sabonrai.wordpress.com/2009/09/27/monotouch-binding-for-admob/ 

contient deux bibliothèques NoThumb âgées:

libAdMobDeviceNoThumb3_0.a (539.288 bytes, created 15 jan 2010 at 03:26) 
libAdMobSimulator3_0.a (488.464 bytes, created 5 september 2009) 

Lorsque vous utilisez la bibliothèque libAdMobDeviceNoThumb3_0.a avec gcc_flags suivants:

-gcc_flags "-L${ProjectDir} -lAdMobDeviceNoThumb3_0 -force_load ${ProjectDir}/libAdMobDeviceNoThumb3_0.a" 

la génération réussit et une application est générée.

Nous n'avons pas encore intégré l'un des trucs admob dans cette application, donc nous ne disons rien sur la fonctionnalité admob. Simplement d'être en mesure de lier avec une bibliothèque, ce qui semble essentiel avant même d'essayer d'utiliser ses fonctionnalités.

Nous sommes frustrés par le fait que la bibliothèque officielle ne lie pas, où une version plus ancienne relie. De plus, la différence de taille est considérable: le fichier officiel a grossi avec un facteur de 4,5!

Donc, si quelqu'un là-bas utilise admob dans une application monotouch, s'il vous plaît fournir toutes les informations pertinentes afin que nous puissions procéder avec notre application.

TIA,

Mollyke.

+0

Cela ressemble à un article qui appartient directement au site AdMob. –

+0

Eh bien, nous leur avons également envoyé un mail à ce sujet. Juste désespéré d'entendre des nouvelles positives à ce sujet. Si l'on fait des recherches, il y a plusieurs personnes qui se battent avec cela, alors nous avons pensé qu'il serait bon d'avoir un forum ouvert à ce sujet. – guivho

+0

Ajoutez -v -v -v avant -gcc_flags afin que nous puissions voir la sortie verbeuse et vous aider avec votre problème. –

Répondre

0

L'utilisation de la bibliothèque AdMob fonctionne dès que la bibliothèque TouchJSON est également liée à l'application via gcc_flags.

1

Comme beaucoup de gens trouveront cette question, vous pouvez utiliser le jusqu'à des liaisons Date de MonoTouch pour AdMob affichée sur github ici https://github.com/dalexsoto/AlexTouch.GoogleAdMobAds

Voici un exemple de la façon de l'utiliser et comment abonnez-vous à ses événements

public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 

      var ad = new GADBannerView(new RectangleF(new PointF(0,0), GADBannerView.GAD_SIZE_300x250)) 
      { 
       AdUnitID = "Use Your AdMob Id here", 
       RootViewController = this 

      }; 

      ad.DidReceiveAd += delegate 
      { 
       this.View.AddSubview(ad); 
       Console.WriteLine("AD Received"); 
      }; 

      ad.DidFailToReceiveAdWithError += delegate(object sender, GADBannerViewDidFailWithErrorEventArgs e) { 
       Console.WriteLine(e.Error); 
      }; 

      ad.WillPresentScreen += delegate { 
       Console.WriteLine("showing new screen"); 
      }; 

      ad.WillLeaveApplication += delegate { 
       Console.WriteLine("I will leave application"); 
      }; 

      ad.WillDismissScreen += delegate { 
       Console.WriteLine("Dismissing opened screen"); 
      }; 

      Console.Write("Requesting Ad"); 
      ad.LoadRequest(new GADRequest()); 
}