博客
关于我
实例分析Facebook激励视频广告接入
阅读量:358 次
发布时间:2019-03-05

本文共 5609 字,大约阅读时间需要 18 分钟。

一,前期基础知识储备

1). 新手入门

使用 Facebook Audience Network,您的 Android 应用可以通过展示 Facebook 广告实现创收。以下是文档位置

 (需翻墙)

2).测试 Audience Network 的实施情况

请在推送至生产环境之前,测试 Facebook Audience Network SDK 的实施情况,以验证使用体验。Audience Network 提供和服务器端两种测试方法。

 (需翻墙)

实际项目中,开发者需要熟悉1)中文档的操作,把Facebook的SDK接入到正式项目;然后2)中的操作由后台人员进行对接,其中开发者需要提供一部测试机的 Google 广告编号 (AAID),用以在Facebook后台注册,以激活视频广告。

二,上代码,正式实现

参考开源项目 和Facebook官方项目 具体分析步骤。

添加Facebook的SDK依赖

implementation 'com.facebook.android:audience-network-sdk:5.6.0'

Application内注册,初始化设置

AudienceNetworkAds.initialize(this);

之后根据需要去为每个广告位申请 PLACEMENT_ID 之后添加进代码中

static String FB_BANNER = "607114842814xyz_1115067832019xyz";    static String FB_RECTANGLE = "607114842814xyz_1116658658526xyz";    static String FB_INTERSTITIAL = "607114842814xyz_1129224397270xyz";    static String FB_REWARD = "607114842814xyz_1120504261475xyz";

这里需要注意,Facebook有多种广告类型,需要根据真实的需要,获取对应的广告ID,然后对应使用。

④(可选)在界面布局中放置一个父容器,广告在此父容器中进行加载

有些广告,比如Banner横幅广告,Rectangle矩形广告,需要在布局中添加一个父容器,然后在该容器中加载广告;

AdView adView = new AdView(mContext, mContext.getString(R.string.rectangle_placement_id), AdSize.RECTANGLE_HEIGHT_250); // 可以设置不同大小的广告mRectangleAd.addView(adView);

其他的插页广告,原生广告,视频广告无此要求。

⑤ (可选)为广告添加监听

一般我们需要对广告进行监听,这样方便执行其他的相关逻辑。需要注意的是,不同广告类型注册的监听是不一样的。

// Banner         adView.setAdListener(new AdListener() {            @Override            public void onError(Ad ad, AdError adError) {                Toast.makeText(Ad_Banner.this, "Ad 90 Error: " + adError.getErrorMessage(), Toast.LENGTH_LONG).show();                Log.d(TAG, "facebook_ad,,onError: Ad 90 Error: " + adError.getErrorMessage()); /*(#606) SDK version not supported*/            }            @Override            public void onAdLoaded(Ad ad) {                Toast.makeText(Ad_Banner.this, "Ad Loaded", Toast.LENGTH_LONG).show();                Log.d(TAG, "facebook_ad,,onAdLoaded: Ad 90 Loaded: ");            }            @Override            public void onAdClicked(Ad ad) {            }            @Override            public void onLoggingImpression(Ad ad) {            }        });
// Rectangle        adView.setAdListener(new AdListener() {            @Override            public void onError(Ad ad, AdError adError) {                Log.d(TAG, "facebook_ad,,onError: Ad_Rectangle : " + adError.getErrorMessage());            }            @Override            public void onAdLoaded(Ad ad) {            }            @Override            public void onAdClicked(Ad ad) {            }            @Override            public void onLoggingImpression(Ad ad) {            }        });
// interstitial        interstitialAd.setAdListener(new AbstractAdListener() {            @Override            public void onError(Ad ad, AdError error) {                super.onError(ad, error);                Log.d(TAG, "facebook_ad,,onError: interstitialAd,,," + error.getErrorMessage());            }            @Override            public void onInterstitialDisplayed(Ad ad) {                super.onInterstitialDisplayed(ad);            }            @Override            public void onInterstitialDismissed(Ad ad) {                super.onInterstitialDismissed(ad);            }            @Override            public void onAdLoaded(Ad ad) {                super.onAdLoaded(ad);                if (canShowFullscreenAd) {                    interstitialAd.show();                }            }        });
// reward         rewardedVideoAd.setAdListener(new S2SRewardedVideoAdListener() {            @Override            public void onRewardServerFailed() {                Log.d(TAG, "S2S onRewardServerFailed: ");            }            @Override            public void onRewardServerSuccess() {                Log.d(TAG, "S2S onRewardServerSuccess: ");            }            @Override            public void onRewardedVideoCompleted() {                Log.d(TAG, "S2S onRewardedVideoCompleted: ");            }            @Override            public void onLoggingImpression(Ad ad) {                Log.d(TAG, "S2S onLoggingImpression: ");            }            @Override            public void onRewardedVideoClosed() {                Log.d(TAG, "S2S onRewardedVideoClosed: ");                rewardedVideoAd.loadAd(true);            }            @Override            public void onError(Ad ad, AdError adError) {                Log.d(TAG, "S2S onError: ");                /*rewardedVideoAd.loadAd(true);*/                initRewardAd();            }            @Override            public void onAdLoaded(Ad ad) {                Log.d(TAG, "S2S onAdLoaded: ");            }            @Override            public void onAdClicked(Ad ad) {                Log.d(TAG, "S2S onAdClicked: ");            }        });

显示广告

不同类型的广告,显示的方法也有一些不同;

// banneradView.loadAd();// RectangleadView.loadAd();// interstitialinterstitialAd.loadAd();@Overridepublic void onAdLoaded(Ad ad) {      super.onAdLoaded(ad);      Log.d(TAG, "facebook_ad,,onAdLoaded: interstitialAd,," + ad);      txStatus.setText("Ad Loaded");      if (canShowFullscreenAd) {            interstitialAd.show();      }}// rewardedrewardedVideoAd.loadAd(true);rewardedVideoAd.show();

经过以上步骤,就可以加载Facebook的广告了。

 

实际开发中,如果是第一次接入Facebook的广告,建议:

先去熟悉广告的开源项目,这时不要使用后台给的正式Placement_id,而是使用Facebook提供的测试id — 

"YOUR_PLACEMENT_ID",即,

static String FB_BANNER = "YOUR_PLACEMENT_ID";    static String FB_RECTANGLE = "YOUR_PLACEMENT_ID";    static String FB_INTERSTITIAL = "YOUR_PLACEMENT_ID";    static String FB_REWARD = "YOUR_PLACEMENT_ID";

然后在全局中,设置广告状态为测试状态,

AdSettings.setTestMode(true);

这样,就可以方便地测试各种广告,又不会承担风险。

以下为几张Facebook广告的测试图:

      

 

最后补充一点,开发者在首次接入Facebook的广告时需要激活,这时需要为后台提供一个AAID。

这篇文章《》实测可行,手机上装好Google Play即可。

 

 

 

 

转载地址:http://xxjg.baihongyu.com/

你可能感兴趣的文章
力扣239. 滑动窗口最大值
查看>>
史上最全Vue的组件传值
查看>>
CSS position属性static/relative/absolute/fixed/sticky用法总结
查看>>
6.14编一个程序,将两个字符串s1和s2比较,不要用strcmp函数。
查看>>
如何解决vscode检测到#include错误,请更新includePath。
查看>>
1007 Maximum Subsequence Sum (25分) Python解法
查看>>
Java纯文本文件显示工具制作
查看>>
Unity2D Fixed Joint 2D详解
查看>>
Unity Shader之路(五)创建第一个顶点/片元着色器?
查看>>
L3-008 喊山 (30分) C++ BFS题解
查看>>
Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)
查看>>
六、Numpy的使用(详解)
查看>>
三、案例:留言板 & url.parse()
查看>>
Python中的filter()函数!!!1
查看>>
(新手小白必学!)用Python设计和实现聪明的尼姆游戏(人机对战)!!!!
查看>>
LeetCode:283. 移动零!!!1
查看>>
Python实验26:计算文件MD5值
查看>>
端口探测
查看>>
LeetCode:28. 实现 strStr()——————简单
查看>>
java 中 private default protected public 范围
查看>>