Adobe Native Extension - AdMob

Esta extensión ya no existe, he creado una nueva con el último SDK de AdMob y compatible con Android y iOS, puedes ver la nueva entrada aquí: http://www.enriquedavid.es/admob-native-extension-para-ios-y-android.html

----------------------------------------------------------

El uso de las Native Extensions de Adobe permite ejecutar código nativo del sistema operativo donde se ejecute nuestra aplicación.

Para sacar el máximo partido de AdMob con Juegos Flash empaquetados para iPhone/iPad/iPod Touch, es necesario mostrar la publicidad de AdMob de forma nativa, de esta manera se consigue un 100% de efectividad, ya que AdMob muestra la publicidad como de forma nativa, así es capaz de mostrar todas las creatividades disponibles e incluso mostrar AdSense si no tiene anuncios relevantes.

Aquí os dejo un .zip con la extensión y una pequeña ayuda: admob-native-extension.zip

El uso es realmente sencillo:

package {
import com.devilishgames.air.extensions.admob.ios.AdMob;
import flash.display.Sprite;
import flash.geom.Point;

public class adMobExample extends Sprite {
private var adMob:AdMob;

public function adMobExample():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);

try {
adMob = new AdMob(); // Instanciamos la clase AdMob
adMob.id = "ID DE ADMOB"; // Indicar el ID de la APP de AdMob
adMob.size = AdMob.GAD_SIZE_320x50; // Indicamos el tamaño del Banner
adMob.position = new Point(0, stage.stageHeight - adMob.size.y); // Indicamos la posición del banner
adMob.testMode = false; // Decimos que no use el modo test
adMob.showAdMob(); // Mostramos el banner
} catch (e:Error) {
trace(e.getStackTrace());
}
}
}
}

Descripción de la clase:

adMob.id: (String) Cadena con el ID de AdMob
adMob.size: (Point) Punto donde indicar el ancho y alto del banner (.x = ancho, .y = alto)
adMob.position: (Point) Punto donde indicar la posición del banner
adMob.testMode: (Boolean) Mostrar el banner en modo Test o no (por defecto True)
adMob.showAdMob(): (Function) Muestra el banner
adMob.hideAdMob(): (Function) Oculta el banner

Espero que os sea de utilidad.

* a modo de ayuda, menos del 10% de los banners que se muestran serán con un ID mio *

¿Fué interesante? Por qué no dejas un comentario abajo y continúas la conversación.

Comentarios

no anda

¿que error te da? funcionar, funciona, porque lo estamos usando y anda.

¿en que dispositivo lo estás probando? ¿que version de iOS lleva?

a ver si es algo de incompatibilidad y puedo prepararte una versión específica para ti.

Cuando debugeo con el flash develop me sale esto:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.devilishgames.air.extensions.admob.ios::AdMob/showAdMob()[E:\My Dropbox\AdMob\extensiones\admob\src\com\devilishgames\air\extensions\admob\ios\AdMob.as:55]

Lo unico que se me ocurrio es que no tenga acceso a stage pero si lo tiene.
Lo probe en un ipad pero no se que version de IOS tiene, lo puedo averiguar pero no creo que tenga nada que ver con eso
No aparece ninguna banner en el ipad.
Si realmente necesitas te averiguo la version que tiene de IOS

El codigo que uso es el sigueinte:

private function setupAdMob(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, setupAdMob);
try {
adMob = new AdMob();
adMob.id = “a14ef8f8abc6a7f”;
adMob.size = AdMob.GAD_SIZE_320×50;
adMob.position = new Point(0, stage.stageHeight - adMob.size.y);
adMob.testMode = false;
adMob.showAdMob();

Tal vez hay algo mal en como configure la aplicacion en la pagina de admob, le puse que sea aplicacion de iphone, o tal vez lo que puse como ID no es lo que va. Estaraia bueno que nos guies un poco en como se trabaja con adMob por que para los que trabajamos con flash admob es algo nuevo, todos necesitamos ayuda con esto.

Gracias

todo apunta a que no has añadido correctamente la extensión… ¿en que entorno estás usandolo? Flash, Flash Develop, …

Flash develop, baje el zip y copie el swc a mi proyecto, despues le puse “add to library” y ya me reconocio la clase perfectamente, es lo que hago siempre con los swc y funcionan, tengo que agragar algun otro de los archivos uqe venian en el zip o algo por el estilo?

ok ya veo que esto es una native extension y se instala distinto que un simple swc, lo unico que pude encontrar es esto:

http://www.flashdevelop.org/community/viewtopic.php?f=9&t=9049&p=42404&hilit=native+extension#p42404

y me da el mismo error que le da a el

alguna ayuda de como instalar la extension con flash develop?

o si no se puede con flash develop, como se instala con flash?

Hola, yo programo siempre en FlashDevelop, por lo que funciona sin problemas. Tienes que tener en cuenta lo siguiente:

1. Añadir el swc al proyecto

2. Cambiar el uso del SWC a “External library (not included)” esto se hace una vez añadido el SWC de forma normal, pulsando con el botón derecho en el SWC y luego elegir Options, ahí podrás marcar esta opción.

3. Añadir el import para usar la clase:

import com.devilishgames.air.extensions.admob.ios.AdMob;

4. Sólo funciona en iOS, en windows, etc. no funcionará.

5. Debes compilar a partir de AIR 3, las versiones anteriores no soportan las Native Extensions.

Hago eso y cuando quiero exportar para IOS me sale el siguiente error:

Packaging: dist\Pejeman-ad-hoc.ipa
using certificate: cert\iphone_adh.p12…

password:
Exception in thread “main” java.lang.Error: Unable to find named traits: com.dev
ilishgames.air.extensions.admob.ios::AdMob
at adobe.abc.Domain.resolveTypeName(Domain.java:231)
at adobe.abc.Domain.resolveTypeName(Domain.java:148)
at adobe.abc.GlobalOptimizer$InputAbc.resolveTypeName(GlobalOptimizer.ja
va:272)
at adobe.abc.GlobalOptimizer$InputAbc.resolveSlotType(GlobalOptimizer.ja
va:946)
at adobe.abc.GlobalOptimizer$InputAbc.resolveType(GlobalOptimizer.java:5
35)
at adobe.abc.GlobalOptimizer$InputAbc.resolveTypes(GlobalOptimizer.java:
448)
at adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:327)
at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler
.java:472)
at com.adobe.air.ipa.BitcodeGenerator.main(BitcodeGenerator.java:82)
Compilation failed while executing : ADT

APK setup creation FAILED.

creo que lo estás haciendo como ad-hoc… prueba a hacerlo de forma normal:

adt -package -target ipa-test-interpreter -provisioning-profile “fichero .mobileprovision” -storetype pkcs12 -keystore “fichero .p12″ -storepass código “Pejeman.ipa” “configuracion.xml” -C “carpeta al swf” nombre.swf -extdir “carpeta de las extensiones”

O si quieres, envíame tus .bat de compilación y los xml de configuración y veo si tienes algo raro.

Ese error es muy extraño.

Lo hice funcionar siguiendo estos pasos:

-Copiar el archivo admob.ane en la carpeta lib del proyecto

-Ir a flash develop y hacer click derecho sobre el archivo admob.ane y despues en “add to library”

-editar el archivo bat/Packager.bat y agregar -extdir lib al final de la linea que empieza con call adt
tiene que quedar algo asi:

call adt -package -target %TYPE%%TARGET% %OPTIONS% %SIGNING_OPTIONS% “%OUTPUT%” “%APP_XML%” %FILE_OR_DIR% -extdir lib

-editar application.xml y agregar lo siguiente:

com.devilishgames.AdMob

-editar application.xml y agregar lo siguiente:

extensions>
extensionID>com.devilishgames.AdMob /extensionID>
/extensions>

le saque el simbolo < para que se muestre

exacto!! no hace falta que añadas como libreria el .ane, sólo se utiliza cuando lo empaquetas para iOS

Ahora el problema que tengo es que cada 5 veces que abro la aplicacion en el ipad me aparece el banner, no aparece siempre, eso es por que anda mal el plugin o por que admob es asi?

y la misma aplicacion en el iphone no aparece el banner directamente

tendra algo que ver el hecho de que estoy exportando la aplicacion como “ad-hoc”?

Eso es por admob, de todas formas, si no es necesario el modo ad-hoc, exportala de forma normal. Ya avisarás cuando tengas la aplicación en la APP Store, para que la pruebe.

No esta andando en el IPhone, lo probaste en un Iphone alguna vez? tal vez soy yo que tengo algun problema?

si, por supuesto. está probado en iphone, ipod y ipad.

I am having trouble, I got it to Package and make the ipa using AdobeAIRSDK but when I create a new admob () it just gives me an error that makes my iPhone white. Any thoughts?

Mi problema de que no se veia el banner en el Iphone era por que yo usaba:

stage.scaleMode = StageScaleMode.SHOW_ALL;

(cosa que no hay que hacer por varios motivos)
para que se adapte el tamaño de la aplicacion a la pantalla del iphone, que originalmente es de tamaño ipad.
Pero como el banner no es un child del stage si no que es independiente, quedaba fuera de la pantalla en el ipad.

losdev > are you testing it on device or desktop? you must to try it on device, if you use a Native Extension for iOS or Android on your desktop it will fail and break the app.

Hay algo muy importante que deberia estar documentado, para cambiar la posicion del banner hay que cambiar el parametro position y para que el cambio de posicion surta efecto agregar estas lineas:

adMob.hideAdMob();
adMob.showAdMob();

Saber esto es indispensable para aplicaciones que cambian la orientacion o se adaptan a diferentes tamaños de pantalla como el caso de las que son compatibles tanto con iphone como con ipad, ya que si cambia el tamaño del stage tenemos que mover el banner a una nueva posicion.

que quiere decir esto:

* a modo de ayuda, menos del 10% de los banners que se muestran serán con un ID mio *

Deberia estar mas claramente informado que cerca del 10% de las ganancias son para el creador del plugin. Muy injusto a mi parecer. En cuanto tenga tiempo voy a hacer mi propio native plugin gratuito para evitar este problema a la comunidad de programadores

Creo que está bastante claro e informado. Mi tiempo vale dinero, por lo que no puedo dedicarme a crear cosas y dar soporte gratuito, de alguna forma debo de rentabilizarlo. No obstante hay varias ANE de AdMob de pago, siempre puedes optar por una de ellas.

No hay otra alternativa que esta de admob apra ios, lo que hay de pago es la de andriod

Cuando el paquete de archivos como ipa-app-store no funciona. ¿Cómo lo paquete de tienda de aplicaciones? ipa-intérprete de prueba funciona, pero que no es aceptado en la App Store lo que pensaba.

Yes I am using adt to package it for Iphone. I got it to work in ipa-test-interpreter mode but I cannot upload it to app store doing this. It requires -ipa-app-store package. I looked inside the ipa itself and it seems that the only thing wrong is that the library.swf doesnt get copied correctly. The file isnt the correct size at all. I can a new version after it was made into the ipa but then again it prevents me from uploading the ipa to the app store because it has been changed after created.

Also, when I package as app-store the app on the iphone doesnt get past the loading splash screen. This is the main issue. It works fine when on the test-interpreter mode as I mentioned.

John Parker > Si es aceptado, de hecho hay varias aplicaciones utilizando esta extensión sin problemas y están las APP’s en la APP Store.

iosdev > If you use ipa-app-store for uploading to the App Store, ipa-test if it works, should also work in ipa-app-store. Try compiling with debug and ipa-debug to debug the application and find out where it fails. What SDK version are you using? What development environment are you using?. Also try to remove the extension, to verify that it is due to the extension, but it should not fail, it is being used in several applications that are in the app store now.

Thanks for the fast reply. Ok so I did ipa-app-store without any extensions and it works fine. I did debug mode with extensions and it quits the app on splash screen so I can’t even have time to connect to debug it.

I am using cs5.5 flash pro to make the app and been compiling using adt from adobe air sdk

Also the sdk is 3 so it supports native extensions. I believe it has to do with packing the admob file. I point the extdir to the folder containing the ane and swf admob file and added the extension in the XML file too.

Well I moved the admob into the second page so it doesn’t appear at main screen and the compile works but when I get to the next screen it freezes. I’ll try to give you some debug info soon.

can you paste your code here? if you compile in debug mode it work?

please, paste here you package command line: adt ….

AdobeAIRSDK\bin\adt -package -target ipa-debug -storetype pkcs12 -keystore iphone_distro.p12 -provisioning-profile mymobile.mobileprovision bottle.ipa bottle-app.xml bottle.swf default.png icon114.png icon57.png icon29.png -extdir extensionsDir

Where extensionsDir has the ane file

seems to be correct, could you paste the information to debug / errors? and the code used to display the banner?

Thank you for your help! I got it working on a new test app in app store package type. I am going to Figure out what is changed in my main program to see why it is not working but the new file is.

Apparently the sdk in flash wasn’t updated exactly right.

I’m glad it works for you now, please write here what happened in order to help others.

take this to indicate that I am preparing a new version of the extension, with many improvements, but until everything is working properly certified and exceeds the review of apple not go up to the web.

I tried a test version on my ipod and it worked. Do you have a similar extension to display iAd ?

When updating to use native extensions in flash, follow these instructions.

http://www.youtube.com/watch?v=pwVkK27Nors

Copy the new Airsdk into flash, copy some files, and edit a few others. This allows the swf compiled to work when using adt app-store packaging

harsh > I haven’t one, but I’m working to release a new Native Extension to use AdWhirl check it here https://www.adwhirl.com/. You can use iAd, adMob, … at same time.

thats great news. When is the extension expected to be released?

I’m fucking busy xD, but in a few weeks I hope to have it ready at the same time an extension to update AdMob .ANE with some interesting events.

Have you got any further on the adwhril extension? I am hoping to use it in my next app.

Hey Enrique, great job! thanks for this. Got it working real easy, the only issues is hideAd() doesn’t hide anything…the ad stays on screen forever.

Maybe you have an idea why?

Hey Enrique. Thanks a lot for the tutorial and for the ANE.
I’m just curious how you managed to compile the ANE? I was trying to include the AdMob iOS sources in an Xcode project. The ANE compiles fine, but when I try building my Flash AIR app with that ANE included, it fails. But with yours, it works fine. So I’m curious what’s the difference. Would you mind sharing with me / us?

Thanks in advace!

Hola Enrique David. Saludos desde México, y muchas gracias por el grán trabajo y por compartirlo.

Nosotros estamos desarrollando apps en Air, y estaría genial utilizar AdWhirl. Nos interesaría mucho saber si es que pudiste terminar el “extension” para lograr esto.

Hi! thanks for this extension it’s really great one!

Zorgonski: I had the same problem - make sure you run showAdMob() only when it’s not shown yet and hideAdMob() when it’s shown (I used a boolean to remember the state) - works fine now

Hola yo quisiera saber si me puedes vender la extension, para que le quites la parte del codigo en la que salen anuncion tuyos, si es posible dime cuanto la venderias gracias y buen dia.

Hi, awesome extension ! thanks!
Which google admob sdk did you use to build it, or was it not required? My publisher is asking whether the app’s location will be passed to the ad system.

thanks!
Hans

Hi, first I want thank for your ANE.

I’m trying use your adMob extension in my iPhone and iPad application, but without success, during compiling process I get a few warnings. I compile code with command line under Win7. My version of Adobe AIR is 3.3 and I used Flash CS5.5 for development.

After compiling process I get this output on commnad line:

ld: warning: -ios_version_min not specificed, assuming 4.0
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/crt1.o
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_addsubdf3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_fixunsdfdi.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_udivdi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_umoddi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_modsi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_udivsi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_umodsi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_divsi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_dvmd_tls.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_clz.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_fixdfsi.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_fixunsdfsi.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_addsubsf3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_fixdfdi.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_divdi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_moddi3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_cmpdf2.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_muldivdf3.o)
ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated: C:\\Program Files (x86)\
\Adobe\\Adobe Flash CS5.5\\AIR2.6\\lib\\aot/lib/gcc/libgcc.a(_unorddf2.o)

Output *.ipa file I can install on device but after I start application, application crash down.

Please, do you have any idea how I can solve this problem?

Thanks in advance!

Gracias por compartir esta extension tan util. Tan solo quisiera preguntar, la extension puede ser usada para mostrar multiples barnners? Si es asi, debo crear varias instancias de AdMod? o cada vez que llamo adMob.showAdMob() un nuevo banner es descargado?

De nuevo muchas gracias

Hola Enrique, has hecho una gran extension, la mejor de las que he probado con admob.
¿Has intentado/conseguido integrar los nuevos formartos de smart banners?
Me gustaria poder poner un banner en un iphone con la pantalla horizontal, los nuevos smart banners permiten colocar un 480×32 (960×64) que tiene el tamaño ideal y muy parecido al que se puede poner con la ane de iAd.
Si lo has conseguido me ayudaría mucho poder hacerlo.

Saludos!

[...] posted by: Hans Wichman category: Uncategorized No Comments After several months of hard work besides doing contract work, ManyMoves has been released! The game was built using Adobe Air for Mobile and a number of native extensions from MilkManGames, JamPot and Devilish Games. [...]

Hola!! Esto funcionaba perfecto hasta hace unos días que salio iOS 6 dejo de funcionar. ¿Alguien conoce alguna solución?

Hola Lucas, en iOS 6 funciona perfectamente, comprueba que estás compilando con AIR 3.4, puesto que con los anteriores fallan bastantes cosas en iOS 6

Hola Misiek, si, voy a modificar la ANE para admitir lo nuevo de AdMob, cambiará todo un poco, habrá que hacer pequeños cambios en el código para volver a mostrar Banners, pero incluye muchas mejoras, como eventos de cuando se muestra banners, se pulsa, se cierra la publi, etc.

Hi all, hope somebody can help us. we just finished a game for IOS ( IPAD ) in Flash CS 6 using the milkmangames Admob extension , it compiles without an error but when we test it on the IPAD with the IOS 6 it launches with a blackscreen for 1 second and it crashes.

Saludos.. se puede usar para una app de android, y como seria..??

Hola que tal, muy bueno el ane, pero lo quise implementar y cuando lo corro en mi iphone veo la pantalla negra, alguna idea de que puede ser? lo estoy corriendo con flash builder 4.6 en una mac

Ya está lista la nueva extensión compatible con Android y iOS para AdMob, podéis leer más aquí: http://www.enriquedavid.es/admob-native-extension-para-ios-y-android.html

Deja un Comentario

(requerido)

(requerido)