Кто использует AdMob в приложении MonoTouch для iPhone?

Кто использует AdMob в приложении MonoTouch для iPhone?

Текущий SDK, который мы получили для admob, — admob_iphone_sdk_20100908.tar.gz.

Он имеет два файла lib, но только файл NoThumb полезен из-за известной ошибки в компоновщике Apple:

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)

При использовании библиотеки libAdMobDeviceNoThumb3_0.a со следующими gcc_flags:

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

сборка завершается успешно, и приложение создается.

Мы еще не интегрировали какие-либо элементы admob в это приложение, поэтому мы ничего не заявляем о функциональности admob. Просто о возможности связываться с библиотекой, что кажется важным, прежде чем даже пытаться использовать ее функциональность.

Мы разочарованы тем фактом, что официальная библиотека не дает ссылки, в то время как более старая версия делает ссылку. Также существенна разница в размерах: официальный файл распух в 4,5 раза!

Поэтому, если кто-то использует admob в моносенсорном приложении, предоставьте любую соответствующую информацию, чтобы мы могли продолжить работу над нашим приложением.

ТИА,

Моллике.


person guivho    schedule 24.11.2010    source источник
comment
Это похоже на сообщение, которое принадлежит непосредственно сайту AdMob.   -  person Chris Marisic    schedule 24.11.2010
comment
Мы тоже написали им об этом. Просто отчаянно хочу услышать положительные новости об этом. Если погуглить, то несколько человек борются с этим, поэтому мы подумали, что было бы неплохо создать открытый форум по этому поводу.   -  person guivho    schedule 24.11.2010
comment
Добавьте -v -v -v перед -gcc_flags, чтобы мы могли увидеть подробный вывод и помочь вам с вашей проблемой.   -  person Geoff Norton    schedule 24.11.2010
comment
Это определило проблему. Библиотека admob также использует часть TouchJSON с объективным исходным кодом. Я пока не стал этим заморачиваться, подумав, что лучше сначала попробовать решить проблему с компоновщиком. Однако -v -v -v показал, что причиной был TouchJSON:   -  person guivho    schedule 24.11.2010
comment
Неопределенные символы: _OBJC_CLASS_$_CJSONSerializer, на который ссылается: objc-class-ref-to-CJSONSerializer в libAdMobNoThumb.a(AdMobAd.o) objc-class-ref-to-CJSONSerializer в libAdMobNoThumb.a(AdMobWebView.o) objc-class- ref-to-CJSONSerializer в libAdMobNoThumb.a(AdMobFlexWebView.o); .a(AdMobSearchViewController.o) objc-class-ref-to-CJSONDeserializer в libAdMobNoThumb.a(AdMobAd.o)   -  person guivho    schedule 24.11.2010
comment
Извините за неожиданное течение. Я попытаюсь сгенерировать библиотеку из этих исходников objc, чтобы я мог заключить ее в ссылку.   -  person guivho    schedule 24.11.2010
comment
см. stackoverflow.com/questions/4271126/   -  person guivho    schedule 24.11.2010
comment
Я не уверен, почему вы открыли второй вопрос по той же проблеме, но я ответил на него там.   -  person Geoff Norton    schedule 24.11.2010


Ответы (2)


Поскольку многие люди найдут этот вопрос, вы можете использовать обновленные привязки monotouch для admob, размещенные на 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());
}
person dalexsoto    schedule 12.02.2012

Использование библиотеки AdMob работает, как только библиотека TouchJSON также связана с приложением через флаги gcc_flags.

person guivho    schedule 28.11.2010