# 5.信息流广告
# 介绍
信息流广告包括视频信息流
和普通信息流
,他们是基于原生广告封装,如需要其他更细粒度操作参考原生广告文档即可
注意
1.广告只能同一时间在同一个地方展示,否则会导致最开始展示的广告无法正常展示或者点击;
2.集成建议:
- 提前调用加载方法进行广告的请求,以便需要触发广告时可以快速展示。
- 禁止在onLoadFail回调中执行广告加载的方法,否则会引起很多无用请求且可能会导致应用卡顿。
3.接入流程建议:
(1) 启动应用或者游戏时预加载广告
(2) 在需要展示原生广告的位置获取广告对象并判断是否为空:
为空:重新加载广告
不为空:展示广告对象,在onAdShow的回调中再预加载下一次的广告
# 使用
使用完毕后,请“务必”调用FNativeAd.destroy()
方法销毁广告,以免造成 内存泄漏
# 加载:
/**
* 加载信息流广告
* @param context 上下文
* @param positionId 广告位Id
* @param size 广告尺寸 AdSize.NEW(int width, int height)
* @param listener 加载监听回调
*/
Ads.loadDrawVideoAd(Context context, String positionId, AdSize size, final FNDrawLoadListener listener);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 渲染:
在合适的时机渲染广告,示例代码:
//加载信息流广告
Ads.loadDrawVideoAd(this, "b5f50a4ac6f0e2", AdSize.NEW(1080, 1920), new FNDrawLoadListener() {
@Override
public void onLoadSuccess(FNativeAd ad) {
//请在合适的时机渲染广告,本示例仅做演示
//判断广告是否为空,由于网络或者其他原因可能会造成广告为空的情况
if (ad == null) {
FNLang.showMsg("缓存的广告为空");
return;
}
//设置广告动作监听
ad.setEventListener(new FNativeEventListener() {
@Override
public void onAdShow() {
FNLang.showMsg("onAdShow");
}
@Override
public void onAdClicked() {
FNLang.showMsg("onAdClicked");
}
@Override
public void onVideoComplete() {
FNLang.showMsg("onVideoComplete");
}
@Override
public void onVideoPlay() {
FNLang.showMsg("onVideoPlay");
}
});
//设置广告dislike监听回调
ad.setDislikeListener(fNativeAdView -> {
if (fNativeAdView != null)
((ViewGroup) fNativeAdView.getParent()).removeView(fNativeAdView);
});
//获取Context
Context context = getApplicationContext();
//创建原生广告视图
FNativeAdView view = new FNativeAdView(context);
FrameLayout container = findViewById(R.id.container_draw);
//将原生广告加入容器中
container.addView(view);
//渲染广告,创建信息流渲染器FNDrawInfoRender
ad.renderAdView(view, new FNDrawInfoRender(context));
//配置广告点击事件,在renderAdView方法之后调用
ad.prepare(view);
}
@Override
public void onLoadFail(String msg, int code) {
Log.i("信息流加载失败:", code + msg);
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 销毁
请在使用完毕后,在适当的时机销毁广告,以避免 内存泄漏
if(ad!=null){
ad.destroy();
}
1
2
3
2
3
# 相关回调监听:
加载回调监听
public interface FNDrawLoadListener {
/**
* 加载成功
*
* @param ad 广告对象,使用完毕后请调用destroy方法销毁
*/
void onLoadSuccess(FNativeAd ad);
/**
* 加载失败
*
* @param msg 错误信息
* @param code 错误代码
*/
void onLoadFail(String msg, int code);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
动作回调监听
public interface FNativeEventListener {
/**
* 广告显示
*/
void onAdShow();
/**
* 广告被点击
*/
void onAdClicked();
/**
* 广告播放完毕
*/
void onVideoComplete();
/**
* 广告开始播放
*/
void onVideoPlay();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
dislike回调监听
public interface FNDislikeListener {
/**
* 广告dislike被点击
* @param fNativeAdView 广告视图
*/
void onCloseClick(FNativeAdView fNativeAdView);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
← 4.Banner广告 6.原生广告 →