版本号 | 修订人 | 修订日期 | 修订内容 |
---|---|---|---|
V1.0.0 | 熊俊杰 | 2024/07/02 | 聚合SDK,提供广告基础功能接口 |
V1.0.04 | - | 2024/07/17 | 优化闪屏,激励视频广告回调触发条件 |
V1.0.07 | - | 2024/08/27 | 优化动画摇一摇效果,优化内部逻辑 |
V1.0.08 | - | 2024/09/03 | 广告添加getECPM()方法 |
目录
1.接入前准备
1.1注册宸星开放平台帐号
请先与商务联系,确认需要接入的聚合广告平台;
由我们给开发者提供开发者平台账号
1.1.1获取AppID,AppKey
登录宸星开发者平台,创建媒体,选择对应的媒体类型,创建一个新的应用名及包名。**(所创建包名必须与接入SDK的应用一致) **
创建后并找到应用的AppID、AppKey, 一个包名对应一个AppID,请记录这些参数,接入SDK时会使用到。
2.聚合平台概况
广告平台名称 | 开屏 | 插屏 | 模版信息流 | 激励视频 | Banner |
---|---|---|---|---|---|
宸星 | √ | √ | √ | √ | X |
自有ADX | √ | √ | √ | √ | √ |
注 : 因宸星SDK和趣盟SDK存在冲突 , 如已接入趣盟SDK , 请勿接入宸星SDK
3.宸星SDK资源导入
3.1本地aar依赖
在 app 目录下新建 libs 文件夹,
将压缩包中的 aar 文件放入 libs 文件夹,
在 app/build.gradle 添加如下代码
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
// 基础包,必接,xxx为版本号,需开发自行替换
implementation(name: "starsads-core-xxx", ext: "aar")
// 宸星SDK包,选接,,xxx为版本号,需开发自行替换
implementation(name: "starsads-cx- xxx", ext: "aar")
// 自有ADX包,选接,xxx为版本号,需开发自行替换
implementation(name: "starsads-adx- xxx", ext: "aar")
// 如果应用内部有接入GSON包则忽略
implementation('com.google.code.gson:gson:2.8.5')
}
注意:为满足广告需求,SDK内部有自采集OAID,ANDROIDID,IMEI相关逻辑
必须至少选择一个广告SDK接入,只接入基础包不会有广告下发
3.2资源文件修改及配置
3.2.1AndroidManifest.xml修改
暂无需操作
3.2.2混淆设置
注意事项:
如果 tools.build:gradle 版本小于 4.1.0,请检查自定义混淆规则或 proguard-android-optimize,确认混淆规则中没有使用 -allowaccessmodification 属性
4.宸星SDK初始化步骤
4.1初始化SDK
注意:由于工信部对设备权限等隐私权限要求愈加严格,强烈推荐APP提前申请好权限,且用户同意隐私政策后再初始化SDK
StarsAds.init(this,AppID, AppKey, new StarsAds.InitListener() {
@Override
public void onSuccess () {
Log.d("SDK", "初始化成功");
}
@Override
public void onFail (StarsAdError error){
Log.d("SDK", "初始化失败");
}
});
5.信息流广告
5.1请求广告
//初始化,注意需要时再初始化,不要复用。
StarsAdNativeExpress starsNativeExpress = new StarsAdNativeExpress(mActivity, slotId);
//推荐:核心事件监听回调
SANativeExpressListener listener = new SANativeExpressListener() {
@Override
public void onAdSucceed() {
logAndToast(mActivity, "Native广告加载成功");
}
@Override
public void onAdRenderSuccess() {
logAndToast(mActivity, "Native广告渲染成功");
}
@Override
public void onAdClose() {
logAndToast(mActivity, "Native广告关闭");
}
@Override
public void onAdExposure() {
logAndToast(mActivity, "Native广告展示");
}
@Override
public void onAdFailed(StarsAdError error) {
logAndToast(mActivity, "Native广告加载失败 code=" + error.code + " msg=" + error.msg);
}
@Override
public void onAdRenderFailed() {
logAndToast(mActivity, "Native广告渲染失败");
}
@Override
public void onAdClicked() {
logAndToast(mActivity, "Native广告点击");
}
};
starsNativeExpress.
setADListener(listener);
starsNativeExpress.
setAdContainer(adContainer);
//必须:请求广告
starsNativeExpress.
loadOnly();
5.2展示广告
注意:container为信息流广告展示位的Layout,Layout必须为FrameLayout
starsNativeExpress.show();
5.3接口说明
StarsAdNativeExpress-信息流广告对象
方法名 | 意义 | 备注 |
---|---|---|
StarsAdNativeExpress(Activityactivity, String starsSlotsId) | 构建广告对象 | Activity:上下文对象 StarsSlotsId:广告位ID |
loadOnly() | 加载信息流广告 | |
show() | 显示广告 | |
setAdContainer(ViewGroup container) | 绑定视图并展示 | 绑定视图必须为FrameLayout |
setADListener(SANativeExpressListener listener) | 设置广告操作回调 | SANativeExpressListener:广告操作回调 |
getECPM() | 获取广告单价 | 单位分 |
SANativeExpressListener-信息流广告加载状态回调
方法名 | 意义 | 备注 |
---|---|---|
onAdRenderFailed() | 广告渲染成功 | |
onAdRenderSuccess() | 广告渲染失败 | |
onAdSucceed() | 广告加载成功 | |
onAdExposure() | 广告曝光 | |
onAdClicked() | 广告点击 | |
onAdClose() | 广告关闭 | |
onAdFailed(StarsAdError error) | 广告显示错误 | StarsAdError:错误信息 详细错误说明请查看错误码 |
6.激励视频
6.1请求广告
//初始化,注 意需要时再初始化,不要复用。
StarsAdRewardVideo starsRewardVideo = new StarsAdRewardVideo(mActivity, slotId);
//必须:核心事件监听回调
SARewardVideoListener listener = new SARewardVideoListener() {
@Override
public void onAdSucceed() {
logAndToast(mActivity, "Reward广告加载成功");
}
@Override
public void onAdExposure() {
logAndToast(mActivity, "Reward广告展示");
}
@Override
public void onAdFailed(StarsAdError error) {
logAndToast(mActivity, "Reward广告加载失败 code=" + error.code + " msg=" + error.msg);
}
@Override
public void onAdClicked() {
logAndToast(mActivity, "Reward广告点击");
}
@Override
public void onVideoCached() {
logAndToast(mActivity, "Reward广告缓存成功");
}
@Override
public void onVideoComplete() {
logAndToast(mActivity, "Reward视频播放完毕");
}
@Override
public void onVideoSkip() {
}
@Override
public void onAdClose() {
logAndToast(mActivity, "Reward广告关闭");
}
@Override
public void onAdReward() {
logAndToast(mActivity, "Reward激励发放");
}
@Override
public void onRewardServerInf(SARewardServerCallBackInf inf) {
//优量汇和穿山甲支持回调服务端激励验证信息,详见RewardServerCallBackInf中字段信息
logAndToast(mActivity, "onRewardServerInf" + inf);
}
};
starsRewardVideo.
setADListener(listener);
6.2展示广告
starsRewardVideo.show();
6.3接口说明
StarsAdRewardVideo-激励视频广告对象
方法名 | 意义 | 备注 |
---|---|---|
StarsAdRewardVideo(Activity activity, String starsSlotsId) | 构建广告对象 | Activity:上下文对象 StarsSlotsId:广告位ID |
loadOnly() | 加载激励视频广告 | |
showAd() | 展示激励视频广告 | |
setADListener(SARewardVideoListener listener) | 设置广告操作回调 | |
getECPM() | 获取广 告单价 | 单位分 |
SARewardVideoListener-激励视频广告加载状态回调
方法名 | 意义 | 备注 |
---|---|---|
onVideoCached() | 广告缓存成功 | |
onVideoComplete() | 广告播放完毕 | |
onVideoSkip() | 广告跳过 | |
onAdReward() | 广告激励发放 | |
onRewardServerInf(SARewardServerCallBackInf inf) | 广告激励发放服务端验证 | 详见RewardServerCallBackInf中字段信息 |
onAdSucceed() | 广告加载成功 | |
onAdExposure() | 广告曝光 | |
onAdClicked() | 广告点击 | |
onAdClose() | 广告关闭 | |
onAdFailed(StarsAdError error) | 广告加载失败 | StarsAdError:错误信息 详细错误说明请查看错误码 |
7.开屏广告
7.1请求广告
//初始化,注意需要时再初始化,不要复用
StarsAdSplash starsSplash = new StarsAdSplash(mActivity, adContainer, slotId);
//必须:设置开屏核心回调事件的监听器。
SASplashListener listener = new SASplashListener() {
@Override
public void onAdClose() {
if (callBack != null)
callBack.jumpMain();
logAndToast(mActivity, "Splash广告关闭");
}
@Override
public void onAdSucceed() {
logAndToast(mActivity, "Splash广告加载成功");
if (logoContainer != null)
logoContainer.setVisibility(View.VISIBLE);
if (starsSplash != null)
starsSplash.show();
}
@Override
public void onAdExposure() {
//设置开屏父布局背景色为白色
if (adContainer != null)
adContainer.setBackgroundColor(Color.WHITE);
logAndToast(mActivity, "Splash广告展示成功");
}
@Override
public void onAdFailed(StarsAdError error) {
logAndToast(mActivity, "Splash广告加载失败 code=" + error.code + " msg=" + error.msg);
}
@Override
public void onAdClicked() {
logAndToast(mActivity, "Splash广告点击");
}
};
starsSplash.
setADListener(listener);
//注意:如果开屏页是fragment或者dialog实现,这里需要置为false。默认为true,代表开屏和首页为两个不同的activity
starsSplash.
setShowInSingleActivity(singleActivity);
//必须:请求并展示广告
starsSplash.
loadOnly();
7.2展示广告
starsSplash.show();
7.3接口说明
StarsAdSplash -开屏广告对象
方法名 | 意义 | 备注 |
---|---|---|
StarsAdSplash(Activity activity, ViewGroup adContainer, String starsSlotsId) | 构建广告对象 | Activity:上下文对象 ViewGroup:广告展现布局 StarsSlotsId:广告位ID |
loadOnly() | 加载开屏广告 | |
showAd() | 展示开屏广告 | |
setADListener(SASplashListener listener) | 设置广告操作回调 | |
getECPM() | 获取广告单价 | 单位分 |
SASplashListener-开屏广告加载状态回调
方法名 | 意义 | 备注 |
---|---|---|
onAdSucceed() | 广告加载成功 | |
onAdExposure() | 广告曝光 | |
onAdClicked() | 广告点击 | |
onAdClose() | 广告关闭 | |
onAdFailed(StarsAdError error) | 广告显示错误 | StarsAdError:错误信息 详细错误说明请查看错误码 |
8.插屏广告
8.1请求广告
//初始化,注意需要时再初始化,不要复用
StarsAdInterstitial starsInterstitial = new StarsAdInterstitial(mActivity, slotId);
baseAD =starsInterstitial;
//必须:核心事件监听回调
SAInterstitialListener listener = new SAInterstitialListener() {
@Override
public void onAdSucceed() {
logAndToast(mActivity, "Interstitial广告就绪");
}
@Override
public void onAdClose() {
logAndToast(mActivity, "Interstitial广告关闭");
}
@Override
public void onAdExposure() {
logAndToast(mActivity, "Interstitial广告展示");
}
@Override
public void onAdFailed(StarsAdError error) {
logAndToast(mActivity, "Interstitial广告加载失败 code=" + error.code + " msg=" + error.msg);
}
@Override
public void onAdClicked() {
logAndToast(mActivity, "Interstitial广告点击");
}
};
starsInterstitial.
setADListener(listener);
//注意:穿山甲默认为"新插屏广告",如果要使用旧版请打开这条设置
//starsInterstitial.setCsjNew(false);
return starsInterstitial;
8.2展示广告
starsInterstitial.show();
8.3接口说明
StarsAdInterstitial-开屏广告对象
方法名 | 意义 | 备注 |
---|---|---|
StarsAdInterstitial(Activity activity, String starsSlotsId) | 构建广告对象 | Activity:上下文对象 StarsSlotsId:广告位ID |
loadOnly() | 加载插屏广告 | |
showAd() | 展示插屏广告 | |
setADListener(SAInterstitialListener listener) | 设置广告操作回调 | |
getECPM() | 获取广告单价 | 单位分 |
SAInterstitialListener-插屏广告加载状态回调
方法名 | 意义 | 备注 |
---|---|---|
onAdSucceed() | 广告加载成功 | |
onAdExposure() | 广告曝光 | |
onAdClicked() | 广告点击 | |
onAdClose() | 广告关闭 | |
onAdFailed(StarsAdError error) | 广告显示错误 | StarsAdError:错误信息 详细错误说明请查看错误码 |
9.Banner广告
9.1请求广告
/初始化,注意需要时再初始化,不要复用
StarsAdBanner starsAdBanner = new StarsAdBanner(mActivity, adContainer, slotId);
//必须:核心事件监听回调
SABannerListener listener = new SABannerListener() {
@Override
public void onAdClose() {
logAndToast(mActivity, "Banner广告关闭");
}
@Override
public void onAdExposure() {
logAndToast(mActivity, "Banner广告展现");
}
@Override
public void onAdFailed(StarsAdError error) {
logAndToast(mActivity, "Banner广告加载失败 code=" + error.code + " msg=" + error.msg);
}
@Override
public void onAdClicked() {
logAndToast(mActivity, "Banner广告点击");
}
@Override
public void onAdSucceed() {
starsAdBanner.show();
logAndToast(mActivity, "Banner广告加载成功");
}
};
starsAdBanner.
setADListener(listener);
starsAdBanner.
setRefreshInterval(30);
baseAD =starsAdBanner;
//如果集成穿山甲,这里必须配置,建议尺寸要和穿山甲后台中的"代码位尺寸"宽高比例一致,值单位为dp,这里示例使用的广告位宽高比为640:100。
int adWidth = ScreenUtil.px2dip(mActivity, ScreenUtil.getScreenWidth(mActivity));
int adHeight = (int) (((double) adWidth / (double) 640) * 100);
//如果高度传入0代表自适应高度
starsAdBanner.
setCsjExpressSize(adWidth, adHeight);
//必须:请求并展示广告
starsAdBanner.
loadOnly();
return starsAdBanner;
9.2展示广告
starsAdBanner.show();
9.3接口说明
StarsAdBanner-开屏广告对象
方法名 | 意义 | 备注 |
---|---|---|
StarsAdBanner(Activity activity, ViewGroup adContainer, String starsSlotsId) | 构建广告对象 | Activity:上下文对象 ViewGroup:广告展现布局 StarsSlotsId:广告位ID |
loadOnly() | 加载Banner广告 | |
showAd() | 展示Banner广告 | |
setADListener(SABannerListener listener) | 设置广告操作回调 | |
setRefreshInterval(int refreshInterval) | 设置Banner自刷新时间 | 0为不自动刷新 取值范围30-120区间有效 单位秒 |
getECPM() | 获取广告单价 | 单位分 |
SABannerListener-Banner广告加载状态回调
方法名 | 意义 | 备注 |
---|---|---|
onAdSucceed() | 广告加载成功 | |
onAdExposure() | 广告曝光 | |
onAdClicked() | 广告点击 | |
onAdClose() | 广告关闭 | |
onAdFailed(StarsAdError error) | 广告显示错误 | StarsAdError:错误信息 详细错误说明请查看错误码 |
10.附录
10.1常见问题
Q1: 广告请求失败?
参考详细错误码。联系产品进行相关配置来提高填充率.
Q2: 广告栏位号如何申请?
广告栏位号要联系产品进行申请.
Q3: 初始化失败或构建请求为空?
1、检查混淆配置keep是否生效
2、版本集成是否有问题
10.2接入问题
如有接入问题请联系技术人员处理
11.错误码
code | message |
---|---|
9900 | 初始化失败异常 |
9901 | 广告返回的数据为空 |
9902 | 广告加载异常 |
9903 | 广告展示异常 |
9904 | 广告渲染异常 |
9905 | 未配置SDK渠道 |
9906 | 执行SDK渠道选择时发生异常 |
9907 | 无策略异常 |
9908-9911 | 聚合SDK内部异常 |
9912 | 参数异常 |
9913 | 无activity异常 |
9914-9918 | 初始化错误 |