下载并集成 Chartboost Adobe AIR SDK ▶

上次更新:

 

添加您的移动游戏到 Chartboost 网络只需 10 行代码!

 


 

包括哪些内容?SDK 文件包内含各项特色功能。

高质量视频广告专为游戏打造,奖励您的玩家!

可自定义插页式广告为您的玩家提供无缝游戏体验!

强大数据分析套件为您定位最佳受众!

查看完整 SDK 发布说明 ▶

 


 

准备好集成 Chartboost SDK?那我们开始吧!

 


 

 

在您开始前:

轻松快捷添加 AIR 插件到您的游戏 — 仅需几个元素:

  • 一个 Chartboost 帐户
  • 一个后台上的应用
  • 最新 AIR 插件
  • 活跃的发布活动
  • Chartboost Adobe AIR 插件目前处于 Beta 阶段。
  • 插件使用 iOS SDK v6.4.7 和 Android SDK v6.4.2。
  • Chartboost AIR 插件支持 iOS 6 及以上版本和 Android 2.3 及以上版本。
  • 要求 -swf-version 33 编译器旗标。在 Flash Builder 中,输入位置为 Project properties > Flex Compiler > Additional compiler arguments
  • 要求 AIR SDK 版本 22 或更高。

 

 

导入 Chartboost 原生扩展到您的 AIR 应用。

建议在您的项目中创建目录到您可以复制 Chartboost.aneChartboost.swc 的位置。然后 (如果您在使用 Flash Builder) 您只需添加该目录为原生扩展目录到您的项目设置。

 


 

添加 <extensionID> 声明到您的 AIR 应用程序描述符的根 <application> 元素:

<extensions>
    <extensionID>com.chartboost.plugin.air</extensionID>
</extensions>

如果您为 Android 生成,您还必须添加清单到您的 AIR 应用程序描述符文件 (记得写入您的 Chartboost 应用 ID 和应用签名):

<manifestAdditions><![CDATA[
 <manifest android:installLocation="auto">
        <!-- Chartboost 需要此权限。 -->
        <uses-permission android:name="android.permission.INTERNET"/>

        <!-- 建议赋予此权限给 Chartboost。 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
 <application>
            <!-- 必须填入您的 AIR 应用 Android 版本的应用 ID 和签名。-->
            <meta-data android:name="__ChartboostAir__AppID" android:value="ANDROID_APP_ID" />
 <meta-data android:name="__ChartboostAir__AppSignature" android:value="ANDROID_APP_SIGNATURE" />
            
            <!-- Chartboost SDK 同样需要。 -->
            <activity android:name="com.chartboost.sdk.CBImpressionActivity"
 android:excludeFromRecents="true" 
 android:hardwareAccelerated="true"
 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
 android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" />

            <!-- 用于 Google Play 服务 (Chartboost 要求) -->
            <meta-data android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />
 </application>
 </manifest>
]]></manifestAdditions>

Android 开发者: 注意如果您还使用了其他插件包括 Google Play 服务,生成过程中会出现错误。如果您希望避免此冲突,请使用免费提供的 ANE 用于 Google Play 服务。

 


 

导入 Chartboost 类。

import com.chartboost.plugin.air.*;

 


 

初始化 Chartboost。

使用 AIR 应用阶段和 Chartboost 应用 ID 和应用签名调用 startWith() 方法。对于不同平台您可能需要有条件调用,因此我们为您提供了一些帮助函数:

if (Chartboost.isAndroid()) {
    Chartboost.startWith(stage, "ANDROID_APP_ID", "ANDROID_APP_SIGNATURE");
} else if (Chartboost.isIOS()) {
    Chartboost.startWith(stage, "IOS_APP_ID", "IOS_APP_SIGNATURE");
}
您必须初始化 Chartboost 系统方可为您记录游戏启动数。如果您不初始化 Chartboost,您将无法运行广告活动。

 


 

如需展示静态或视频插页式广告:

Chartboost.showInterstitial(CBLocation.DEFAULT);
  • 您可以使用 CBLocation 界面类以获取默认位置常数列表,也可以自己定义。位置使用后会添加到您的后台,您可以进行自定义。
  • 如需自定义控制广告行为,Chartboost SDK 还提供更多特性,如缓存、委托方法和命名位置。
  • 了解 Chartboost 视频广告详情 ▶
请勿在同一位置 cacheInterstitial 后直接调用 showInterstitial,否则 SDK 会静默失败。
强烈推荐您在显示广告前先缓存。了解缓存详情 ▶

 

如需显示激励式视频广告:

Chartboost.showRewardedVideo(CBLocation.DEFAULT);
  • 您可以使用 CBLocation 界面类以获取默认位置常数列表,也可以自己定义。位置使用后会添加到您的后台,您可以进行自定义。
  • 如需自定义控制广告行为,Chartboost SDK 还提供更多特性,如缓存、委托方法和命名位置。
  • 了解 Chartboost 视频广告详情 ▶
请勿在同一位置 cacheRewardedVideo 后直接调用 showRewardedVideo,否则 SDK 会静默失败。
强烈推荐您在显示广告前先缓存。了解缓存详情 ▶

 

调用 Chartboost 方法:

/actionscript/src/com/chartboost/plugin/air/Chartboost.as 中,您可以找到 AIR 到原生方法,可用于与 Chartboost 插件互动:

/** 初始化 Chartboost 插件 */
public static function startWith(stage:Stage, appID:String, appSignature:String):void

/** 从 ChartboostEvent 类侦听代理事件。请见文档
* 您从参数选择的事件和您所提供的函数返回值。 */
public static function addDelegateEvent(eventName:String, listener:Function):void

/** 缓存插页式广告。 */
public static function cacheInterstitial(location:String):void

/** 显示插页式广告。 */
public static function showInterstitial(location:String):void

/** 检查插页式广告是否成功缓存。 */
public static function hasInterstitial(location:String):Boolean

/** 缓存“更多应用”页面。 */
public static function cacheMoreApps(location:String):void

/** 显示“更多应用”页面。 */
public static function showMoreApps(location:String):void

/** 查看“更多应用”页面是否成功缓存。 */
public static function hasMoreApps(location:String):Boolean

/** 缓存激励式视频。 */
public static function cacheRewardedVideo(location:String):void

/** 显示激励式视频。 */
public static function showRewardedVideo(location:String):void

/** 检查激励式视频是否已缓存。 */
public static function hasRewardedVideo(location:String):Boolean

/** 缓存原生广告。 */
public static function cacheInPlay(location:String):void

/** 获取已缓存原生广告。
* 这个非同步操作,因此不会返回 CBInPlay 对象,
*  而是在就绪后传入函数。
* 如无原生广告可用,函数不会调用。
* 函数应有一个参数,一个 CBInPlay 对象。查看示例应用以获取用途示范。 */
public static function getInPlay(location:String, fn:Function):void

/** 检查原生广告是否成功缓存。 */
public static function hasInPlay(location:String):Boolean

/** 调用为您响应的任何 UI 结果
* 代理方法 didPauseClickForConfirmation() */
public static function didPassAgeGate(pass:Boolean):void

/** 自定义设置 */
public static function setCustomID(customID:String):void
public static function getCustomID():String

/** 设置在首次用户会话调用的插页式广告 */
public static function setShouldRequestInterstitialsInFirstSession(shouldRequest:Boolean):void

/** 设置是否使用年龄限制功能。
* 调用 Chartboost.didPassAgeGate() 以提供用户响应。 */
public static function setShouldPauseClickForConfirmation(shouldPause:Boolean):void

/** 设置“更多应用”页面是否有全屏加载视图。 */
public static function setShouldDisplayLoadingViewForMoreApps(shouldDisplay:Boolean):void

/** 设置是否预提取视频内容 */
public static function setShouldPrefetchVideoContent(shouldPrefetch:Boolean):void

/** 控制是否在可行时自动缓存广告 (default: true)。 */
public static function setAutoCacheAds(shouldCache:Boolean):void
public static function getAutoCacheAds():Boolean

/** Chartboost 应用内购买分析 */
public static function trackIOSInAppPurchaseEvent(receipt:String, title:String, description:String, price:Number, currency:String, productID:String):void
public static function trackGooglePlayInAppPurchaseEvent(title:String, description:String, price:String, currency:String, productID:String, purchaseData:String, purchaseSignature:String):void
public static function trackAmazonStoreInAppPurchaseEvent(title:String, description:String, price:String, currency:String, productID:String, userID:String, purchaseToken:String):void

/** Chartboost 安装后数据分析 */
public static function trackLevelInfoEvent(eventLabel:String, eventField:CBLevelType, mainLevel:int, subLevel:int, description:String):void

/** 仅 iOS: 设置存在状态栏时 Chartboost 如何互动 (default: Ignore)。 */
public static function setStatusBarBehavior(statusBarBehavior:CBStatusBarBehavior):void

/** 了解广告是否在屏幕上可见。 */
public static function isAnyViewVisible():Boolean

/** 关闭所有打开状态下的展示。在 iOS 下如成功则返回,在 Android 下始终返回“true”。 */
public static function closeImpression():Boolean

/** 返回 IAP 是否自动跟踪。仅 iOS。 */
public static function getAutoIAPTracking():Boolean

/** 返回网络视图是否启用 (服务器设置)。仅 Android。 */
public static function isWebViewEnabled():Boolean

/** 设置系统界面是否在展示期间隐藏。仅 Android。 */
public static function setShouldHideSystemUI(shouldHide:Boolean):void

/** 仅限封装: 设置使用的中介服务 */
public static function setMediation(mediator:CBMediation, version:String):void

 


 

侦听 Chartboost 事件:

Chartboost 触发不同事件以告知展示状态。如需与事件互动,您必须专门侦听事件。最佳位置为您的活动屏幕的初始代码:

// 某些初始化代码
chartboost.addDelegateEvent(ChartboostEvent.DID_CLICK_INTERSTITIAL, function (location:String):void {
 trace( "Chartboost: on Interstitial clicked: " + location );
});

/actionscript/src/com/chartboost/plugin/air/ChartboostEvent.as 中,您可以找到所有可供侦听的事件:

/** SDK 成功初始化后触发。初始化完成后使用。
* 参数: (status:Boolean) */
public static const DID_INITIALIZE:String = "didInitialize";

/** 当插页式广告加载失败时触发。
* 参数: (location:String, error:CBLoadError) */
public static const DID_FAIL_TO_LOAD_INTERSTITIAL:String = "didFailToLoadInterstitial";

/** 在显示插页式广告时触发。返回是否。
* 参数: (location:String)
* 返回: Boolean */
public static const SHOULD_DISPLAY_INTERSTITIAL:String = "shouldDisplayInterstitial";

/** 插页式广告以任何方法完成后触发。
* 需要与关闭或点击活动相配对。
* 参数: (location:String) */
public static const DID_CLICK_INTERSTITIAL:String = "didClickInterstitial";

/** 当插页式广告关闭时触发
* (即点击 X 或点击 Android 返回按钮)。
* 参数: (location:String) */
public static const DID_CLOSE_INTERSTITIAL:String = "didCloseInterstitial";

/** 当点击插页式广告时触发。
* 参数: (location:String) */
public static const DID_DISMISS_INTERSTITIAL:String = "didDismissInterstitial"; 

/** 在插页式广告缓存时触发。
* 参数: (location:String) */
public static const DID_CACHE_INTERSTITIAL:String = "didCacheInterstitial";

/** 在显示插页式广告时触发。
* 参数: (location:String) */
public static const DID_DISPLAY_INTERSTITIAL:String = "didDisplayInterstitial";

/** 当“更多应用”页面加载失败时触发。
* 参数: (location:String, error:CBLoadError) */
public static const DID_FAIL_TO_LOAD_MOREAPPS:String = "didFailToLoadMoreApps";

/** 在显示“更多应用”页面时触发。返回是否。
* 参数: (location:String) */
public static const SHOULD_DISPLAY_MOREAPPS:String = "shouldDisplayMoreApps";

/** “更多应用”页面完成后触发。
* 需要与关闭或点击活动相配对。
* 参数: (location:String)
* 返回: Boolean */
public static const DID_CLICK_MORE_APPS:String = "didClickMoreApps";

/** 在“更多应用”页面关闭时触发
* (即点击 X 或点击 Android 返回按钮)。
* 参数: (location:String) */
public static const DID_CLOSE_MORE_APPS:String = "didCloseMoreApps";

/** 点击“更多应用”界面上列表时触发
* 参数: (location:String) */
public static const DID_DISMISS_MORE_APPS:String = "didDismissMoreApps";

/** 当“更多应用”页面缓存时触发
* 参数: (location:String) */
public static const DID_CACHE_MORE_APPS:String = "didCacheMoreApps";

/** 在显示“更多应用”页面时触发。
* 参数: (location:String) */
public static const DID_DISPLAY_MORE_APPS:String = "didDisplayMoreApps";

/** 在点击发生后而用户未转至 iOS App Store 时触发。
* 参数: (location:String, error:CBClickError) */
public static const DID_FAIL_TO_RECORD_CLICK:String = "didFailToRecordClick";

/** 缓存激励式视频时触发。
* 参数: (location:String) */
public static const DID_CACHE_REWARDED_VIDEO:String = "didCacheRewardedVideo";

/** 点击激励式视频时触发。
* 参数: (location:String) */
public static const DID_CLICK_REWARDED_VIDEO:String = "didClickRewardedVideo";

/** 关闭激励式视频时触发。
* 参数: (location:String) */
public static const DID_CLOSE_REWARDED_VIDEO:String = "didCloseRewardedVideo";

/** 完成激励式视频时触发。
* 参数: (location:String, reward:int) */
public static const DID_COMPLETE_REWARDED_VIDEO:String = "didCompleteRewardedVideo";

/** 消除激励式视频时触发。
* 参数: (location:String) */
public static const DID_DISMISS_REWARDED_VIDEO:String = "didDismissRewardedVideo";

/** 激励式视频显示失败时触发。
* 参数: (location:String, error:CBLoadError) */
public static const DID_FAIL_TO_LOAD_REWARDED_VIDEO:String = "didFailToLoadRewardedVideo";

/** 即将显示激励式视频时触发。返回是否。
* 参数: (location:String)
* 返回: Boolean */
public static const SHOULD_DISPLAY_REWARDED_VIDEO:String = "shouldDisplayRewardedVideo";

/** 激励式视频显示后立即触发。
* 参数: (location:String) */
public static const DID_DISPLAY_REWARDED_VIDEO:String = "didDisplayRewardedVideo";

/** 即将显示视频时触发。
* 参数: (location:String) */
public static const WILL_DISPLAY_VIDEO:String = "willDisplayVideo";

/** 在 Chartboost 插件暂停点击操作,等待用户确认时调用。
* 参数: 无 */
public static const DID_PAUSE_CLICK_FOR_COMFIRMATION:String = "didPauseClickForConfirmation";

/** 仅限 iOS: App Store 工作表消除并显示内嵌应用工作表时调用。
* 参数: 无 */
public static const DID_COMPLETE_APP_STORE_SHEET_FLOW:String = "didCompleteAppStoreSheetFlow";

 


 

测试您的集成。

如需测试安装,请开始发布活动,添加已集成插件的应用到您的活动中,然后在设备上生成项目。

如果您在代码调用之处可以看到 Chartboost 的测试插页式广告,那就表示大功告成!请务必禁用测试模式 (从应用设置页面) 以便查看实际网络广告:

 


 

大功告成! 您已将 Chartboost SDK 集成到您的应用!

您现在可以开始广告活动 ▶

 


 

了解更多 Chartboost SDK 特性

  • 缓存: 通过保存到本地加速广告和“更多应用”页面加载时间。
  • Chartboost 视频: 添加优质视频广告为玩家提供最佳游戏内体验。
  • 命名位置: 从后台优化广告活动的对象定位和广告频率。
  • “更多应用”: 在您的应用中新建和自定义“查看更多游戏”页面从而为您或其他开发者的游戏投放广告。
  • 安装后数据分析: 用于具有应用内购买的游戏。解锁有关玩家购买行为的数据以优化广告活动或二次营销。
  • 中介: 在一系列顶级网络中展示您的广告。

 


 

您可能还希望…