Alex Liebert:http://www.adobe.com/cn/devnet/air/articles/admob-ane-android.html
使用来自 Milkman Games 的 AdMob Extension for Android,您可以使用 ActionScript 3 快速将 Google AdMob 广告集成到您的移动 AIR 应用程序中。
AdMob Extension for Android 完全是原生的 AdMob Java 解决方案,支持您:
- 通过 Google AdMob 将免费游戏货币化
- 只需两行代码即可显示您的第一个广告
- 通过一个完整的示例应用程序、ActionScript 3 文档和入门指南快速掌握开发技能
- 在您的应用程序更改方向时自动重新放置广告
- 同时支持电话和平板电脑上的 AdMob 横幅格式
- 注册您的测试设备,使您可以在不影响度量指标的情况下进行开发
- 使用简单命令创建、销毁、显示和隐藏广告
本教程详细介绍 AdMob Android 扩展的使用。如果您希望执行以下的所有步骤,则需要购买和下载 AdMob Android extension.
使用 AdMob Android 扩展的第一步是向您的项目添加 com.milkmangames.nativeexetnsions.AdMob.ane 库。 (如果您未使用 Flash Builder 4.6 和更高版本或 Flash Professional CS6 和更高版本,您将需要添加 AdMobAPI.swc 库。)
在 Flash Professional CS6 中:
- 创建一个类型为 AIR for iOS 的新项目。
- 选择 File > Publish Settings。.
- 单击 Script for ActionScript Settings 旁边的扳手图标。
- 选择 Library Path 选项卡。
- 击 Browse For Native Extension (ANE) File 并选择 com.milkmangames.nativeextensions.AdMob.ane file.
在 Flash Builder 4.6 中:
- 转到 Project Properties(在 Package Explorer 中右键单击您的项目并选择 Properties)。
- 选择 ActionScript Build Path 并单击 Native Extensions 选项卡。
- 单击 Add ANE 并导航到 com.milkmangames.nativeextensions.AdMob.ane 文件。
在 FlashDevelop 中:
- 将 AdMobAPI.swc 文件复制到您的项目文件夹中。
- 在资源管理器面板中,右键单击 SWC 并选择 Add To Library。
- 在资源管理器面板中,再次右键单击 SWC 文件,选择 Options,然后选择 External Library。
您可使用 AdMob 扩展,通过几次简单的调用让您的代码正常运行。 请参阅 example/AdMobExample.as 了解完整示例,该示例演示了如何处理错误,销毁和刷新广告,设置广告可见性,以及处理广告状态更改。
首先执行以下步骤:
- 导入 API 类:
com.milkmangames.nativeextensions.android.*;com.milkmangames.nativeextensions.android.events.*;
- 使用
AdMob.isSupported
属性确认您当前的平台支持 AdMob,使用 AdMob 发布者 ID 初始化 API(您可以从 AdMob 网站控制面板获取您的发布者 ID):
if(AdMob.isSupported){ AdMob.init("YOUR_PUBLISHER_ID");} else{ trace(“AdMob only runs on Android.”); return;}
- 显示您的第一个广告。 下面的调用显示一个与左下角对齐的横幅广告:
AdMob.showAd(AdMobAdType.IAB_BANNER,AdMobAlignment.LEFT,AdMobAlignment.BOTTOM);
- 要在测试时避免广告印痕,您可设置一组 testDevice ID。 您可以在运行应用程序时,运行一次 adb logcat(命令为
android-sdk\platform-tools\adb logcat
)来获取您设备的测试 ID。 在输出中查找以下行:
I/Ads ( 834): To get test ads on this device, call adRequest.addTestDevice("THIS_IS_YOUR_TEST_ID");
注意: 这不同于设备 ID。您将需要至少运行一次 logcat 来找到您的广告测试 ID。
var testDevices:Vector.<String>=new Vector.<String>();testDevices.push("YOUR_TEST_DEVICE_ID_HERE");AdMob.showAd(AdMobAdType.IAB_BANNER, AdMobAlignment.LEFT, AdMobAlignment.BOTTOM, testDevices);
完成测试后,传递一个空的 testDevices Vector 对象
或 null
。
- 要为您的广告使用绝对像素位置,您可以提供 x 和 y 偏移分别作为 showAd() respectively. 请注意,像素偏移与屏幕的真实大小是相对的(您可通过
stage.stageWidth
和stage.stageHeight
) 读取屏幕真实大小),因为 AdMob 扩展不知道 AIR(通过fullscreen
属性或其他属性)执行的任何缩放。 下列示例显示了一个位于像素位置 20, 32(相对于设备左上角)的广告:
AdMob.showAd(AdMobAdType.IAB_BANNER,AdMobAlignment.LEFT, AdMobAlignment.TOP, testDevices,20,32);
Google 对 AdMob API 的设计是广告的绝对物理像素尺寸将基于设备屏幕的物理大小而不同。 要准确布局您的应用程序,您可能需要知道广告在特定设备上将具有的尺寸。 您可以使用 getPixelSize()
函数访问这些尺寸,它返回一个 Rectangle 对象,该对象的宽度和高度表示 IAB_BANNER 将在当前电话或平板电脑上显示的真实像素大小。 为了方便起见,您也可以阅读 AdMobAdEvent 对象的 .dimensions
属性来在一个时间监听器函数中获取此值。 您可使用此信息基于广告大小准确地执行布局。 下面是一个示例函数调用:
var realSize:Rectangle=AdMobAdType.getPixelSize(AdMobAdType.IAB_BANNER);
不幸的是,这意味着广告的(像素)大小将因运行广告的电话或平板电脑的不同而不同。 但是,绝大部分 Android 设备将在 Google 所谓的 large 和 xlarge 两种模式中的一种下运行。
A几乎所有 Android 电话都属于 large 类别,将拥有 480 x 75 像素的横幅。 几乎所有 Android 平板电脑和一些新的、较大的 Android 电话都属于 xlarge 类别,将拥有 640 x 100 像素的横幅。
large 和 xlarge 尺寸仅是一种参考标准,您应该使用上面介绍的 getPixelSize()
方法精确地确定自己设备上的横幅大小。
您需要将您的 AIR 应用程序描述符文件配置为使用 AIR 3.0 SDK(或更高版本),包括 AdMob 扩展,使用一些特定于 AdMob 的设置更新 Android 描述文件附件。有关有效的示例,请参阅 example/app.xml.
- 在应用程序描述符文件中将您的 AIR SDK 设置为 3.0 或更高版本:
<application xmlns="http://ns.adobe.com/air/application/3.0">
- 在描述符中包含扩展的一个链接:
<extensions><extensionID>com.milkmangames.extensions.AdMob</extensionID></extensions>
- 更新您的 Android 描述文件附件。必须具有
android.permission.INTERNET
和android.permission.ACCESS_NETWORK_STATE
权限,AdMob 才能生效。您也可以在<application>
中添加com.google.ads.AdActivity
活动,如下所示:
<android><manifestAdditions><![CDATA[<manifest android:installLocation="auto"><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><application><activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation" /></application></manifest>]]></manifestAdditions></android>
如果您在使用 Flash Builder 4.6 或更高版本,或者 Flash Professional CS6 或更高版本,并且已如上所述添加了 AdMob Android 扩展库,那么您可像平常一样直接从 IDE 编译。 如果不是,并且您在使用扩展从命令行构建应用程序,那么您需要指定包含 com.milkmangames.nativeextensions.AdMob.ane 文件的目录。
下面是一个示例构建命令行:
[PATH_TO_AIR_SDK]\bin\adt -package -target apk-debug -storetype pkcs12 –keystore [YOUR_KEYSTORE_FILE] -storepass [YOUR_PASSWORD] anesample.apk app.xml anesample.swf –extdir [DIRECTORY_CONTAINING_ANE_FILE]
如果您在显示广告时遇到麻烦,请尝试以下技巧:
- 确保您的发布者 ID 已通过
AdMob.init()
正确设置。 - 确保您拥有广告清单。 您可通过在调用
showAd()
时设置测试设备的 ID,保证将显示一个广告。 请参阅example/AdMobExample.as 了解如何完成此工作的示例。 - 通过监听
FAILED_TO_RECEIVE_AD
事件,检查检索广告时的错误:
AdMob.addEventListener(AdMobErrorEvent.FAILED_TO_RECEIVE_AD, onFailedReceiveAd);
- 从 AdMob 扩展执行
android-sdk/platform-tools/adb logcat
来检查完整的调试文本。 - 确保您处理了所有可能的 AdMobErrorEvent 事件。 未发现的错误可能导致您的代码停止。
现在您的 AdMob Android 扩展已正常运行,您可能希望查阅 ActionScript 3 文档或查阅其他 来自 Milkman Games 的工具。.