广告聚合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再重新加载一次广告
  • 当观看广告完成后,收到"下发奖励"回调,再发放奖励给玩家

激励视频广告-1

3.3 激励视频广告对接方式二

  • 进入游戏某页面时,先调用isRewardLoad,判断广告加载成功,再显示奖励按钮
  • 如果isRewardLoad返回加载失败,请调用loadReward再重新加载一次广告
  • 观看广告完成后,收到"下发奖励"回调,再发放奖励给玩家
    激励视频广告-2

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();