广告聚合SDK-Android(Java)
1 文档修订记录
文档版本 | 文档更新日期 | 文档更新内容 |
---|---|---|
3.3.36 | 2022.01.05 | 初版 |
2 接入准备
支持 Android Studio 接入
2.1 导入SDK
打开下载好的 FYBase、FYADMediation 目录,拷贝目录中所有 .aar 到工程的 libs 目录中
2.2 配置 gradle
打开工程的 build.gradle
- 拷贝以下代码到
android
字段下。
repositories {
flatDir {
dirs 'libs'
}
}
- 拷贝以下代码到
dependencies
字段下。
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
fileTree(dir: 'libs', include: ['*.aar']).each { file ->
api(name: file.name.lastIndexOf('.').with {
it != -1 ? file.name[0..<it] : file.name
}, ext: 'aar')
}
2.3 添加SDK配置
1.到星云平台的"对接中心->SDK对接->SDK列表->基础接入参数->SDK配置参数"下载如下的配置文件:
- Android SDK 配置文件:FYCoreConfig.xml
2.打开以上的配置文件,拷贝所有meta-data
配置参数到游戏的 AndroidManifest.xml 中的application
标签下
2.4 配置 Application
1、在游戏包名下新增一个 GameApplication 类,该类继承自 Application,请在GameApplication 类的 onCreate
方法中调用以下代码:
FYADMediation.getInstance().doApplicationOnCreate();
请在GameApplication类的 attachBaseContext
方法中调用以下代码:
FYAPP.getInstance().init(this);
FYADMediation.getInstance().doApplicationAttachBaseContext(base);
打开 AndroidManifest.xml 在 application 将其继承于 GameApplication:
2.如果游戏已经继承于其他 Application,请在游戏自定义的 Application 类的 onCreate
方法中调用以下代码:
请在游戏自定义的 Application 类的 attachBaseContext
方法中调用以下代码:
FYAPP.getInstance().init(this);
FYADMediation.getInstance().doApplicationAttachBaseContext(base);
请在游戏自定义的 Application 类的 onCreate
方法中调用以下代码:
FYADMediation.getInstance().doApplicationOnCreate();
3.以上2个步骤任选1个接入,否则会造成 SDK 错误闪退
。
2.5 添加权限
打开 AndroidManifest.xml 添加如下权限配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.6 添加Activity
1.在 AndroidManifest.xml 中的 添加 Activity
。
<activity
android:name="com.stars.advirtual.activity.FYVARewardActivity"
android:label="@string/app_name"
android:screenOrientation="behind"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
>
</activity>
2.7 添加类引用
import com.stars.admediation.FYADMediation;
import com.stars.admediation.bean.FYAMInfo;
import com.stars.admediation.bean.FYAMInitInfo;
import com.stars.admediation.bean.FYAMResponse;
2.8 添加 Activity生命周期方法
1、说明
- 调用点:onKeyDown生命周期
2、调用代码
FYDebugger.getInstance().onKeyDown(keyCode,event);
3、参考范例
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
FYDebugger.getInstance().onKeyDown(keyCode,event);
return super.onKeyDown(keyCode, event);
}
2.9 开启调试模式
1.将 AndroidManifest.xml 中的 FY_GAME_DEBUG 的值改为 1,即可开启「调试模式」;FY_GAME_DEBUG 改为 0,即关闭「调试模式」。
2.开启「调试模式」会显示客户端的悬浮球,点击进入调试工具可以查看接口/回调的调用信息,具体调试方法可查看文档。
2.10 配置游戏内展示位ID
-
游戏内展示位ID,用于标识和区分不同的广告展示位
-
对接前需要在星云后台先配置好游戏内展示位ID,对接时要传递给SDK接口,请前往星云后台进行配置:对接中心->广告位管理->游戏内展示位管理
3 游戏交互示范
3.1 初始化
- 在启动游戏后,调用
doInit
接口 - 初始化成功回调中,调用
loadReward
,进行广告预加载
3.2 激励视频广告对接方式一
- 点击游戏中的获取奖励按钮,先调用
isRewardLoad
,判断广告加载成功,再调用showReward
- 如果
isRewardLoad
返回加载失败,游戏做一个类似"广告未加载"的提示,然后调用loadReward
再重新加载一次广告 - 当观看广告完成后,收到"下发奖励"回调,再发放奖励给玩家
3.3 激励视频广告对接方式二
- 进入游戏某页面时,先调用
isRewardLoad
,判断广告加载成功,再显示奖励按钮 - 如果
isRewardLoad
返回加载失败,请调用loadReward
再重新加载一次广告 - 观看广告完成后,收到"下发奖励"回调,再发放奖励给玩家
4 客户端接口
接口接入的要诀?
-
必接接口一定要接入,选接接口根据需要接入
-
必传参数一定要传,能传的参数尽量都传
-
所有的生命周期接口一定要接入
4.1 初始化 doInit
(必接)
1.说明
- 游戏需要在刚启动游戏的时候调用
- 可以在此处注册的回调中,处理相应的游戏逻辑
2.调用
FYAMInitInfo initInfo = new FYAMInitInfo();
initInfo.setGameVersion("x.x.x");
FYADMediation.getInstance().doInit(initInfo, new FYADMediation.FYAMCallback() {
// 初始化回调
@Override
public void fyamInitCallback(FYAMResponse response) {
if(FYAMResponse.FYAMResponsInitSuccess == response.getStatus()){
// 初始化成功,广告预加载,例:
// FYAMInfo info = new FYAMInfo();
// info.setPlacementId("xxxx");
// FYADMediation.getInstance().loadReward(info);
} else if(FYAMResponse.FYAMResponsInitFailure == response.getStatus()){
// 初始化失败
// 失败原因
String message = response.getMessage();
}
}
// 激励视频广告回调
@Override
public void fyamRewardCallback(FYAMResponse response) {
if(FYAMResponse.FYAMResponseRewardLoadSuccess == response.getStatus()){
// 广告加载成功
} else if(FYAMResponse.FYAMResponseRewardLoadFailure == response.getStatus()){
// 广告加载失败
// 失败原因
String message = response.getMessage();
// *禁止在此处调用加载广告接口,以防止游戏卡顿
} else if(FYAMResponse.FYAMResponseRewardShow == response.getStatus()){
// 广告展示成功
} else if(FYAMResponse.FYAMResponseRewardShowFailure == response.getStatus()){
// 广告展示失败
// 失败原因
String message = response.getMessage();
} else if(FYAMResponse.FYAMResponseRewardClick == response.getStatus()){
// 广告点击
} else if(FYAMResponse.FYAMResponseRewardClose == response.getStatus()){
// 广告关闭
} else if(FYAMResponse.FYAMResponseRewardSuccess == response.getStatus()){
// 下发奖励
// 获取游戏内展示位ID,用来对该展示位下发奖励
String placementId = String.valueOf(response.getDataValue("placement_id"));
}
}
@Override
public void fyamBannerCallback(FYAMResponse response) {
// 暂未开放
}
@Override
public void fyamInterstitialCallback(FYAMResponse response) {
// 暂未开放
}
});
3.参数
参数名 | 说明 | 是否必传 |
---|---|---|
gameVersion | 游戏版本号 | 是 |
- 回调:fyamInitCallback
4.2 加载激励视频广告 loadReward
(必接)
1.说明
- 用来加载激励视频广告
- 需在初始化成功后调用此接口,以完成广告预加载
2.调用
FYAMInfo info = new FYAMInfo();
info.setPlacementId("xxxx");
FYADMediation.getInstance().loadReward(info);
3.参数
参数 | 类型 | 说明 | 是否必传 |
---|---|---|---|
placementId | string | 游戏内展示位ID | 是 |
4.回调
- fyamRewardCallback
4.3 展示激励视频广告 showReward
(必接)
1.说明
- 用来拉起激励视频广告
- 在调用此接口之前,需确保对应游戏内展示位ID的广告已加载
2.调用
FYAMInfo info = new FYAMInfo();
info.setPlacementId("xxx");
FYADMediation.getInstance().showReward(info);
3.参数
参数 | 类型 | 说明 | 是否必传 |
---|---|---|---|
placementId | string | 游戏内展示位ID | 是 |
4.回调
- fyamRewardCallback
4.4 激励视频广告是否已加载 isRewardLoad
(必接)
1.说明
- 用来判断激励视频广告是否已加载
- 在调用
showReward
之前,需先调用此接口判断广告是否加载成功 - 如果此接口返回加载失败,需重新调用一次
loadReward
2.调用
FYAMInfo info = new FYAMInfo();
info.setPlacementId("xxx");
String isLoad = FYADMediation.getInstance().isRewardLoad(info)
if(("1").equals(isLoad){
// 加载成功,展示广告
FYADMediation.getInstance().showReward(info);
} else {
// 加载失败,再次加载广告
FYADMediation.getInstance().loadReward(info);
}
3.参数
参数 | 类型 | 说明 | 是否必传 |
---|---|---|---|
placementId | string | 游戏内展示位ID | 是 |
4.返回值
类型 | 说明 |
---|---|
string | "0":加载失败/"1":加载成功 |
4.5 生命周期(必接)
1.说明
- 在游戏界面 Activity 相应的生命周期方法中调用,必须全部都接入。
2.调用
- onCreate()
FYADMediation.getInstance().onCreate();
- onActivityResult()
FYADMediation.getInstance().onActivityResult(requestCode, resultCode, data);
- onStart()
FYADMediation.getInstance().onStart();
- onStop()
FYADMediation.getInstance().onStop();
- onNewIntent()
FYADMediation.getInstance().onNewIntent(intent);
- onResume()
FYADMediation.getInstance().onResumed();
- onRequestPermissionsResult()
FYADMediation.getInstance().onRequestPermissionsResult(requestCode,permissions,grantResults);
- onDestroy()
FYADMediation.getInstance().onDestroy();
- onPause()
FYADMediation.getInstance().onPaused();
- onRestart()
FYADMediation.getInstance().onRestart();