博客
关于我
实例分析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/

你可能感兴趣的文章
用 wxPython 打印你的 App
查看>>
wxPython:引用、展示图片、Stock IDs、操作剪切板、拖拽
查看>>
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
查看>>
Linux下安装MySql过程
查看>>
原生vue实现VantUI中IndexBar索引导航栏功能
查看>>
android:使用audiotrack 类播放wav文件
查看>>
vue通过better-scroll 封装自定义的下拉刷新组件
查看>>
android解决:使用多线程和Handler同步更新UI
查看>>
vue自定义封装Loading组件
查看>>
解决移动端项目中苹果ios和安卓android手机点击输入框网页页面自动放大缩小
查看>>
Element UI 中动态路由的分析及实现
查看>>
使用springMVC配置视图管理器后找不到指定的页面
查看>>
关于js中对于Promise的深入理解
查看>>
杭电 2007 平方和与立方和(输入数据的大小顺序并不能默认)
查看>>
十大排序算法之三:插入排序(Python)
查看>>
利用Python实现循环队列
查看>>
利用递归实现二叉树的前中后序遍历(Python)
查看>>
Python刷题输入输出
查看>>
冒泡排序又来啦(C/C++版本)
查看>>
python负数存储
查看>>