C# 谁在MonoTouch iPhone应用程序中使用AdMob?

C# 谁在MonoTouch iPhone应用程序中使用AdMob?,c#,iphone,objective-c,xamarin.ios,admob,C#,Iphone,Objective C,Xamarin.ios,Admob,谁在MonoTouch iPhone应用程序中使用AdMob 我们为admob获得的当前sdk是admob_iphone_sdk_20100908.tar.gz 它有两个lib文件,但由于Apple链接器中众所周知的错误,只有NoThumb文件可用: libAdMobNoThumb.a (2.464.412 bytes, created on 16 september 2010 at 14:41) 当我们使用以下额外标志链接一个测试应用程序(只是一个新生成的基于iPhone Windows的项

谁在MonoTouch iPhone应用程序中使用AdMob

我们为admob获得的当前sdk是admob_iphone_sdk_20100908.tar.gz

它有两个lib文件,但由于Apple链接器中众所周知的错误,只有NoThumb文件可用:

libAdMobNoThumb.a (2.464.412 bytes, created on 16 september 2010 at 14:41)
当我们使用以下额外标志链接一个测试应用程序(只是一个新生成的基于iPhone Windows的项目,没有任何更改)时:

-gcc_flags "-L${ProjectDir} -lAdMobNoThumb -force_load ${ProjectDir}/libAdMobNoThumb.a"
mtouch在这方面失败得很惨 mtouch失败,没有输出(1)

(我们使用-force_load选项,而不是-ObjC选项,如以下内容末尾的注释所示:

http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html)
MT_samconcemob.zip测试项目可从以下博客获得:

http://sabonrai.wordpress.com/2009/09/27/monotouch-binding-for-admob/
包含两个旧的NoThumb库:

libAdMobDeviceNoThumb3_0.a (539.288 bytes, created 15 jan 2010 at 03:26)
libAdMobSimulator3_0.a (488.464 bytes, created 5 september 2009)
当使用libadmobDeviceOnThumb3_0时。具有以下gcc_标志的库:

-gcc_flags "-L${ProjectDir} -lAdMobDeviceNoThumb3_0 -force_load ${ProjectDir}/libAdMobDeviceNoThumb3_0.a"
构建成功并生成应用程序

我们还没有在这个应用程序中集成任何admob内容,所以我们没有说明任何admob功能。只是能够链接到一个库,这似乎在尝试使用它的功能之前是必不可少的

我们对官方图书馆没有链接的事实感到失望,而旧版本没有链接。此外,大小差异相当大:官方文件膨胀了4.5倍

因此,如果有人在monotouch应用程序中使用admob,请提供任何相关信息,以便我们继续使用我们的应用程序

蒂亚


Mollyke。

一旦TouchJSON库也通过gcc_标志链接到应用程序中,使用AdMob库就会起作用。

一旦TouchJSON库也通过gcc_标志链接到应用程序中,使用AdMob库就会起作用。

因为很多人会发现这个问题,所以您可以使用最新的monotouch绑定r admob发布在github上

下面是一个如何使用它以及如何支持它的事件的示例

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

因为很多人会发现这个问题,所以您可以使用发布在github上的admob的最新monotouch绑定

下面是一个如何使用它以及如何支持它的事件的示例

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

这听起来像是一篇直接属于AdMob网站的帖子。我们也向他们发送了这方面的邮件。只是急切地想听到一些关于这方面的积极消息。如果有人在谷歌上搜索,会有几个人在挣扎,所以我们认为最好有一个关于它的开放论坛。在-gcc_标志之前添加-v-v-v,这样我们就可以看到详细的输出这就指出了问题所在。admob库还使用了一个客观的c源代码TouchJSON部分。我还没有考虑它,认为最好先尝试解决链接器问题。但是-v-v-v揭示了TouchJSON是原因:未定义的符号:“\u OBJC\u CLASS\u$\ u CJSONSerializer”,引用自:libAdMobNoThumb.a(AdMobAd.o)中的objc class ref到CJSONSerializer libAdMobNoThumb.a(AdMobWebView.o)中的objc class ref到CJSONSerializer libAdMobNoThumb.a(AdMobFlexWebView.o)“\u objc\u class\uu$\u CJSONDeserializer”,引用自:libAdMobNoThumb.a(admobepener.o)中的objc类引用到Cjson反序列化器libAdMobNoThumb.a(AdMobSearchViewController.o)中的objc类引用到libAdMobNoThumb.a(AdMobAd.o)中的Cjson反序列化器这听起来像是一篇直接属于AdMob网站的帖子。我们也向他们发送了这方面的邮件。只是急切地想听到一些关于这方面的积极消息。如果有人在谷歌上搜索,会有几个人在挣扎,所以我们认为最好有一个关于它的开放论坛。在-gcc_标志之前添加-v-v-v,这样我们就可以看到详细的输出这就指出了问题所在。admob库还使用了一个客观的c源代码TouchJSON部分。我还没有考虑它,认为最好先尝试解决链接器问题。但是-v-v-v揭示了TouchJSON是原因:未定义的符号:“\u OBJC\u CLASS\u$\ u CJSONSerializer”,引用自:libAdMobNoThumb.a(AdMobAd.o)中的objc class ref到CJSONSerializer libAdMobNoThumb.a(AdMobWebView.o)中的objc class ref到CJSONSerializer libAdMobNoThumb.a(AdMobFlexWebView.o)“\u objc\u class\uu$\u CJSONDeserializer”,引用自:libAdMobNoThumb.a(admobepener.o)中的objc类引用到Cjson反序列化器libAdMobNoThumb.a(AdMobSearchViewController.o)中的objc类引用到libAdMobNoThumb.a(AdMobAd.o)中的Cjson反序列化器