【问题标题】:Who uses AdMob in a MonoTouch iPhone app?谁在 MonoTouch iPhone 应用程序中使用 AdMob?
【发布时间】:2012-02-12 11:20:21
【问题描述】:

谁在 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_SampleAdMob.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)

使用带有以下 gcc_flags 的 libAdMobDeviceNoThumb3_0.a 库时:

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

构建成功并生成一个应用程序。

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

我们对官方库没有链接的事实感到沮丧,旧版本的链接。而且,大小差异很大:官方文件膨胀了4.5倍!

因此,如果有人在单点触控应用中使用 admob,请提供任何相关信息,以便我们继续使用我们的应用。

TIA,

莫莉克。

【问题讨论】:

  • 这听起来像是直接属于 AdMob 网站的帖子。
  • 我们也给他们发了邮件。只是急切地想听到一些关于这方面的积极消息。如果一个人用谷歌搜索,有几个人在为此苦苦挣扎,所以我们认为最好有一个关于它的开放论坛。
  • 在 -gcc_flags 之前添加 -v -v -v 以便我们查看详细输出并帮助您解决问题。
  • 这确定了问题所在。 admob 库还使用了一个客观的 c 源 TouchJSON 部分。我还没有理会它,认为最好先尝试解决链接器问题。然而 -v -v -v 显示 TouchJSON 是原因:
  • 未定义符号:“_OBJC_CLASS_$_CJSONSerializer”,引用自:libAdMobNoThumb.a(AdMobAd.o) 中的 objc-class-ref-to-CJSONSerializer (AdMobAd.o) libAdMobNoThumb 中的 objc-class-ref-to-CJSONSerializer。 a(AdMobWebView.o) libAdMobNoThumb.a(AdMobFlexWebView.o) "_OBJC_CLASS_$_CJSONDeserializer" 中的 objc-class-ref-to-CJSONSerializer,引用自:libAdMobNoThumb.a(AdMobOpener.o) 中的 objc-class-ref-to-CJSONDeserializer ) objc-class-ref-to-CJSONDeserializer in libAdMobNoThumb.a(AdMobSearchViewController.o) objc-class-ref-to-CJSONDeserializer in libAdMobNoThumb.a(AdMobAd.o)

标签: c# iphone objective-c xamarin.ios admob


【解决方案1】:

由于很多人会发现这个问题,你可以使用最新的单点触控绑定发布在 github 上 https://github.com/dalexsoto/AlexTouch.GoogleAdMobAds

这是一个如何使用它以及如何订阅它的事件的示例

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

【讨论】:

    【解决方案2】:

    只要 TouchJSON 库也通过 gcc_flags 链接到应用程序,就可以使用 AdMob 库。

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 2011-09-29
      • 1970-01-01
      相关资源
      最近更新 更多