实例分析Facebook激励视频广告接入
发布日期:2021-05-08 00:50:44 浏览次数:10 分类:精选文章

本文共 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即可。

 

 

 

 

上一篇:实例:Google Play游戏服务接入排行榜和成就系统
下一篇:实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月05日 03时13分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章