为使用 Chartboost Android SDKs v6.0+,此更新向导会帮助您更新游戏。
您也可以在此阅读 SDK 6.x 的独立文档。
重要更改
以下是从早期 SDK 版本 (4.x) 升级 到 6.x 时需要了解的更改:
- SDK 初始化 API 名称和其必要参数已变更
- 公开方法现改为静态,因此不使用实例调用,您需要直接通过类对象调用方法 (例如,您需要将
this.cb.showInterstitial(location);
替换为Chartboost.showInterstitial(location);
并省略任何实例变量声明 (例如,删除private Chartboost cb;)
- 在
onCreate() 内替换 sharedChartboost 方法
(例如,替换this.cb = Chartboost.sharedChartboost();
为新的初始化方法Chartboost.startWithAppId(this,appId,appSignature);)
ChartboostDelegate
不再是界面,而是抽象类。这意味着您无需提前知道 (或实施) 所需的委托数据传输。- 如需创建委托,无需传输“null”或委托对象到
this.cb.onCreate(...)
。它有自己的类方法Chartboost.setDelegate(cb_delegate);
需要放在Chartboost.onCreate(this);
之前 (详情见下文)。 - 将
this.cb.onCreate(this, appId, appSignature, this.chartBoostDelegate);
替换为Chartboost.onCreate(this);
- 将所有实例变量调用替换为类方法调用,例如
this.cb.cacheInsterstitial()
应改为Chartboost.cacheInterstitial(location);
- 所有
has<CachedObject>
的方法名称均做出修改以明确含义,例如hasCachedInterstitial, hasCachedMoreApps, hasCachedVideo
等现已改为hasInterstitial, hasMoreApps, hasRewardedVideo
。这些是静态布林方法,需要静态字符串位置参数,如果缓存内容存在则返回“True”。 - 新: 添加了新活动数据传输:
onPause()
和onResume()
。 - 新:
setAutoCacheAds(boolean autoCacheAds)
. 详情见后文。 - CBPreferences 已不复存在,请删除对其一切调用:
this.cbPref = CBPreferences.getInstance();
所有收视均使用活动。请确保您添加以下内容到您的AndroidManifest.xml
文件:<activity android:name="com.chartboost.sdk.CBImpressionActivity" android:excludeFromRecents="true" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" android:configChanges="keyboardHidden|orientation|screenSize" />
- 如果使用,用于声明是否在用户首次会话时显示的插页式广告的覆盖公共方法
shouldRequestInterstitialsInFirstSession()
需要替换为“setter”方法Chartboost.setShouldRequestInterstitialsInFirstSession(boolean shouldRequest);
-
可选 (最佳实践): 在 /res/values/strings.xml 中定义 appId 和 appSignature。
<string name="appId">5147872917ba476a7e000005</string> <string name="appSignature">50009149c7f545672c016b30f8b504ec2123d419</string>
然后传输
getResources().getString(R.string.appId)
,getResources().getString(R.string.appSignature)
而非在 Chartboost.onCreate 中以字符串传输 appId 和 appSignature
初始化比较
以下为 4.x 初始化实例,与 6.x 初始化比较:
/* 为 Chartboost 4.x SDK 否决示例 SDK 初始化 */ public class ChartboostSDKv4 extends Activity { private static final String TAG = "Chartboost"; private Chartboost cb; private CBPreferences cbPrefs; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.cb = Chartboost.sharedChartboost(); this.cbPrefs = CBPreferences.getInstance(); String appId = ""; String appSignature = ""; this.cb.onCreate(this, appId, appSignature, this.chartBoostDelegate); } } /* Chartboost 6.x SDK 示例 SDK 初始化 */ public class ChartboostSDKv5 extends Activity { private static final String TAG = "Chartboost"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 最佳实践: 在 /res/values/strings.xml 中定义 appId 和 appSignature。 Chartboost.startWithAppId(this, getResources().getString(R.string.appId), getResources().getString(R.string.appSignature)); Chartboost.setLoggingLevel(Level.ALL); Chartboost.setDelegate(cb_delegate); Chartboost.onCreate(this); } }
步骤
按照以下步骤升级您的 SDK 到 6.x。完成以下步骤后,请复核“重要更改”部分以确保您已包括全部内容。
- 验证您的应用仍符合最低要求:
- 至少 API 等级 9 (Android OS 2.3)
- 要求权限:
android.permission.INTERNET
- 必须权限:
android.permission.ACCESS_NETWORK_STATE
- 可选 (建议) 权限:
android.permission.WRITE_EXTERNAL_STORAGE
- 可选 (推荐) 权限:
android.permission.ACCESS_WIFI_STATE
- 可选 (推荐) 权限:
android.permission.READ_PHONE_STATE
- 首先从您的项目中删除所有旧的
chartboost.jar
文件。- 如果您项目中没有
libs
文件夹,请创建并添加 .jar 文件 - 您也可以添加
chartboost.jar.properties
和doc
文件夹到libs
以便从 IDE 获取 javadocs。
- 如果您项目中没有
- 验证 Google Play Services Library 为项目的相关内容。
- Google Play 库有自己的集成指南,包括添加到 Android Manifest 和 ProGuard 的配置。
- 您可以按照 Google 开发者网站上列出的指南
-
在您的
AndroidManifest.xml
文件中添加如下条目,以显示平滑过渡和视频回放:<activity android:name="com.chartboost.sdk.CBImpressionActivity" android:excludeFromRecents="true" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" android:configChanges="keyboardHidden|orientation|screenSize" />
- 验证已导入 Chartboost SDK 到任意使用 Chartboost 的活动:
-
import com.chartboost.sdk.Libraries.CBLogging.Level; import com.chartboost.sdk.Model.CBError.CBClickError; import com.chartboost.sdk.Model.CBError.CBImpressionError; import com.chartboost.sdk.Tracking.CBAnalytics; import com.chartboost.sdk.CBLocation; import com.chartboost.sdk.CBImpressionActivity; import com.chartboost.sdk.Chartboost; import com.chartboost.sdk.ChartboostDelegate;
-
如果您在 Chartboost 展示中显示的内容可以更改方向,您需要添加属性到
AndroidManifest.xml
文件以得到平滑的视频过渡效果:android:configChanges="keyboardHidden|orientation|screenSize"
-
在启动器活动类中更新 Chartboost SDK 初始化以进行 Chartboost 数据传输和 API 调用。
初始化有两种选项:- 您可以让 SDK 为您处理,方法是扩展
ChartboostActivity
。本操作使您不必覆盖任何活动周期方法,例如onCreate
,您只需调用Chartboost.OnCreate()
。跳到步骤 11。 -
您可以明确扩展应用的主活动 (继续步骤 7 到 8)。请见示例:
public class <Your class name> extends Activity @Override public void onCreate() { super.onCreate(); Chartboost.startWithAppId(this, appId, appSignature); /* 可选: 如果您希望程序响应 Chartboost 事件,请在此提供委托对象并查看步骤 10 以获取进一步信息 */ //Chartboost.setDelegate( cb_delegate ); Chartboost.onCreate(this); } }
- 您可以让 SDK 为您处理,方法是扩展
-
更新您的活动的
onStart()
,onPause()
,onResume()
,onStop()
,onDestroy()
和onBackPressed()
方法如下:@Override public void onStart() { super.onStart(); Chartboost.onStart(this); } @Override public void onResume() { super.onResume(); Chartboost.onResume(this); } @Override public void onPause() { super.onPause(); Chartboost.onPause(this); } @Override public void onStop() { super.onStop(); Chartboost.onStop(this); } @Override public void onDestroy() { super.onDestroy(); Chartboost.onDestroy(this); } @Override public void onBackPressed() { // 如屏上有插页式广告则关闭。 if (Chartboost.onBackPressed()) return; else super.onBackPressed(); }
-
重要: 您的所有插页式广告、“更多应用”、InPlay 和视频调用均为静态。您必须传输位置字符串到每次调用,“
null
”不再可用。如果您不传输位置,SDK 无法抓取任何广告。您可以使用CBLocation
界面类以获取默认位置常数列表,也可以自己定义。位置使用后会添加到您的后台,您可以进行自定义。-
示例广告调用:
// 静态和视频插页式广告 Chartboost.cacheInterstitial(CBLocation.LOCATION_DEFAULT); Chartboost.showInterstitial(CBLocation.LOCATION_DEFAULT); // 激励式视频 Chartboost.showRewardedVideo(CBLocation.LOCATION_GAMEOVER); Chartboost.cacheRewardedVideo(CBLocation.LOCATION_GAMEOVER);
-
-
返回步骤 7,您可能注意到了
Chartboost.setDelegate(delegate)
。注: 系统不再传输“null”或委托对象到覆盖onCreate()
以创建委托,因为它现已有自己的类。在初始化中,先调用此方法然后再调用Chartboost.onCreate(this)
。-
需要参数为委托对象,允许您响应您所感兴趣的事件,方法是覆盖您所选择的方法。只需提供一个抽象类
ChartboostDelegate
的对象作为参数:private ChartboostDelegate cb_delegate = new ChartboostDelegate() { //覆盖您希望跟踪和控制的 Chartboost 委托数据传输 };
-
新方法使您无需从 ChartboostDefaultDelegate 扩展,不同于前一版本 SDK。
-
-
您可以选择让活动从
ChartboostActivity
使用 Chartboost 扩展而非从 Activity。详情请见 README.md。重要: 如果您使用此集成方法,您必须初始化 Chartboost,使用Chartboost.startWithAppId()
然后 调用super.onCreate()
。如果您不使用,则会算作例外,因为在 SDK 调用前需要先内部初始化Chartboost.onCreate()
。示例:public class <Your class name> extends ChartboostActivity { @Override public void onCreate() { Chartboost.startWithAppId(this, appId, appSignature); super.onCreate(); fooBar(); } }
安装后数据分析
如果您将在游戏中提供游戏内购买,不妨考虑集成安装后数据分析: 您可以解锁重要信息 — 收益、ARPU、保持数、等级及其他 — 以优化 UA 广告活动或生成自定义用户组群用于用户回访和分群。
年龄限制
如果您使用
didPauseClickForConfirmation()
此方法来处理年龄限制功能,该方法现已更新为:
public void didPauseClickForConfirmation(Activity activity)
深度讲解
Java API 文档随同 SDK 和示例应用提供。
请查阅 CBSample
内的代码作为示例。
如果您计划使用 Proguard,请添加如下内容到您的 proguard.cfg 文件 (另外确保您遵循 Proguard 说明用于 Google Play Services 库):
-keep class com.chartboost.** { *; }
如有疑问,
务请与我们联系。希望您的 SDK 集成顺利,以便将精力投入到开发优质游戏中去!如果您遇到任何问题,请立即与客服团队联系,我们乐意为您效劳。
Last Updated on 6月 13, 2017