如何在 Android 中集成 Facebook Audience Network (FAN) 插页式广告?
为了从 Android 应用或游戏中赚钱,有很多方法,例如应用内购买、赞助、广告等等。但还有另一种从 Android 应用程序中赚钱的流行方法是集成第三方广告,例如称为Facebook Audience Network (FAN)。 Facebook Audience Network 旨在帮助通过用户体验获利。通过使用高价值的格式、高质量的广告和创新的发布者工具,它有助于在保持人们参与的同时发展业务。
为什么选择 Facebook 受众网络?
- Facebook Audience Network 是 Google Admob 通过 Android 或 IOS 应用获利的最佳选择之一。
- 最低支出为100 美元
- 广泛的广告格式
- 最大填充率
- 高eCPM (每千次有效成本)
- 优质广告
- 个性化广告
Facebook Audience Network的格式
Facebook Audience Network 主要提供五种灵活、高性能的格式
- 原生:您为应用设计的广告,无缝衔接
- 插页式广告:吸引注意力并成为体验一部分的全屏广告。
- 横幅:各种展示位置的传统格式。
- 奖励视频:用户发起的沉浸式视频广告,奖励用户观看。
- Playables:一种先试后买的广告体验,允许用户在安装前预览游戏。
在本文中,让我们将Facebook Audience Network 插页式广告集成到 Android 应用程序中。
插页式广告:插页式广告是覆盖应用整个 UI 的全屏广告。插页式广告的eCPM (Effective Cost Per Mille)相对高于横幅广告,也导致更高的 CTR(点击率),从而从应用中获得更多收入。
方法
第 1 步:创建新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,尽管我们将使用Java语言来实现这个项目,但选择Java作为语言。
第 2 步:在进入编码部分之前先做一些前置任务
- 转到app -> res -> values -> colors.xml文件并设置应用程序的颜色。
colors.xml
#0F9D58
#0F9D58
#05af9b
activity_main.xml
MainActivity.java
package org.geeksforgeeks.project;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.facebook.ads.Ad;
import com.facebook.ads.AdError;
import com.facebook.ads.AudienceNetworkAds;
import com.facebook.ads.InterstitialAd;
import com.facebook.ads.InterstitialAdListener;
public class MainActivity extends AppCompatActivity {
// Creating a object of Button class
Button showInterstitialBtn;
// creating object of InterstitialAd
InterstitialAd fbInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// link those objects with their respective id's that we have given in activity_main.xml file
showInterstitialBtn = (Button) findViewById(R.id.showInterBtn);
// initializing the Audience Network SDK
AudienceNetworkAds.initialize(this);
loadInterstitial();
// click listener to show Interstitial Ad
showInterstitialBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showInterstitial();
}
});
}
void showInterstitial() {
// Checking If Ad is Loaded or Not
if (fbInterstitialAd.isAdLoaded()) {
// showing Ad
fbInterstitialAd.show();
} else {
// Loading Ad If Ad is Not Loaded
fbInterstitialAd.loadAd();
}
}
private void loadInterstitial() {
// initializing InterstitialAd Object
// InterstitialAd Constructor Takes 2 Arguments
// 1)Context
// 2)Placement Id
fbInterstitialAd = new InterstitialAd(this, "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID");
// Interstitial AdListener
fbInterstitialAd.setAdListener(new InterstitialAdListener() {
@Override
public void onInterstitialDisplayed(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onInterstitialDisplayed", Toast.LENGTH_SHORT).show();
}
@Override
public void onInterstitialDismissed(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onInterstitialDismissed", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Ad ad, AdError adError) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onAdLoaded(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onAdLoaded", Toast.LENGTH_SHORT).show();
}
@Override
public void onAdClicked(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onAdClicked", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoggingImpression(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onLoggingImpression", Toast.LENGTH_SHORT).show();
}
});
// loading Ad
fbInterstitialAd.loadAd();
}
}
- 转到Gradle Scripts -> build.gradle (Module: app)部分并导入以下依赖项,然后单击上面弹出窗口中的“立即同步” 。
implementation ‘com.facebook.android:audience-network-sdk:5.+’
- 转到app -> manifests -> AndroidManifests.xml部分并允许“Internet Permission”。
第 3 步:设计用户界面
在activity_main.xml文件中只添加一个Button ,因此每当用户点击 Button 时,奖励视频广告就会播放。
activity_main.xml
第 4 步:使用MainActivity。Java
- 打开主活动。类里面有Java文件,首先创建Button类的对象。
// Creating an object of Button class
Button showInterstitialBtn;
- 现在在onCreate() 方法,将这些对象与它们在activity_main.xml文件中给出的 ID 链接起来。
// link those objects with their respective id’s that we have given in activity_main.xml file
showInterstitialBtn=(Button)findViewById(R.id.showInterBtn);
- 现在在onCreate()方法中,初始化Facebook Audience Network SDK。
// initializing the Audience Network SDK
AudienceNetworkAds.initialize(this);
- 在MainActivity中创建一个InterstitialAd对象。 Java类
// creating object of InterstitialAd
InterstitialAd fbInterstitialAd;
- 接下来在onCreate()方法之外创建一个私有的 void loadInterstitial( ) 方法并定义它。
private void showInterstitial()
{
// initializing InterstitialAd Object
// InterstitialAd Constructor Takes 2 Arguments
// 1)Context
// 2)Placement Id
fbInterstitialAd = new InterstitialAd(this, “IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID”);
// loading Ad
fbInterstitialAd.loadAd();
}
- 初始化 SDK 后调用onCreate()方法中的loadInterstitial() 。
Note: Replace “IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID” with your own placement id to show real ads.
- 接下来在onCreate( ) 方法之外创建一个 void showInterstitial()方法,我们稍后会调用该方法来展示广告。
void showInterstitial()
{
// Checking If Ad is Loaded or Not
if(fbInterstitialAd.isAdLoaded())
{
// showing Ad
fbInterstitialAd.show();
}
else
{
// Loading Ad If Ad is Not Loaded
fbInterstitialAd.loadAd();
}
}
- 所以接下来就是调用showInterstitial() 当用户单击显示广告按钮时的方法。
- 现在在onCreate()方法中为按钮创建一个ClickListener并调用 显示插页式()。
// click listener to show Interstitial Ad
showInterstitialBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showInterstitial();
}
});
- 现在为 Interstitial Ad 添加InterstitialAdListener ,以便用户知道广告的状态。要添加InterstitialAdListener打开loadInterstitial()方法并在fbInterstitialAd.loadAd() 之前添加以下代码。
// Interstitial AdListener
fbInterstitialAd.setAdListener(new InterstitialAdListener() {
@Override
public void onInterstitialDisplayed(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, “onInterstitialDisplayed”, Toast.LENGTH_SHORT).show();
}
@Override
public void onInterstitialDismissed(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, “onInterstitialDismissed”, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Ad ad, AdError adError) {
// Showing Toast Message
Toast.makeText(MainActivity.this, “onError”, Toast.LENGTH_SHORT).show();
}
@Override
public void onAdLoaded(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, “onAdLoaded”, Toast.LENGTH_SHORT).show();
}
@Override
public void onAdClicked(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, “onAdClicked”, Toast.LENGTH_SHORT).show();
}
@Override
public void onLoggingImpression(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, “onLoggingImpression”, Toast.LENGTH_SHORT).show();
}
});
- 并且在InterstitialAdListener Override方法中显示一个 toast 消息,以便用户知道广告的状态。下面是MainActivity 的完整代码。 Java文件。
主要活动。Java
package org.geeksforgeeks.project;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.facebook.ads.Ad;
import com.facebook.ads.AdError;
import com.facebook.ads.AudienceNetworkAds;
import com.facebook.ads.InterstitialAd;
import com.facebook.ads.InterstitialAdListener;
public class MainActivity extends AppCompatActivity {
// Creating a object of Button class
Button showInterstitialBtn;
// creating object of InterstitialAd
InterstitialAd fbInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// link those objects with their respective id's that we have given in activity_main.xml file
showInterstitialBtn = (Button) findViewById(R.id.showInterBtn);
// initializing the Audience Network SDK
AudienceNetworkAds.initialize(this);
loadInterstitial();
// click listener to show Interstitial Ad
showInterstitialBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showInterstitial();
}
});
}
void showInterstitial() {
// Checking If Ad is Loaded or Not
if (fbInterstitialAd.isAdLoaded()) {
// showing Ad
fbInterstitialAd.show();
} else {
// Loading Ad If Ad is Not Loaded
fbInterstitialAd.loadAd();
}
}
private void loadInterstitial() {
// initializing InterstitialAd Object
// InterstitialAd Constructor Takes 2 Arguments
// 1)Context
// 2)Placement Id
fbInterstitialAd = new InterstitialAd(this, "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID");
// Interstitial AdListener
fbInterstitialAd.setAdListener(new InterstitialAdListener() {
@Override
public void onInterstitialDisplayed(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onInterstitialDisplayed", Toast.LENGTH_SHORT).show();
}
@Override
public void onInterstitialDismissed(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onInterstitialDismissed", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Ad ad, AdError adError) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onAdLoaded(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onAdLoaded", Toast.LENGTH_SHORT).show();
}
@Override
public void onAdClicked(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onAdClicked", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoggingImpression(Ad ad) {
// Showing Toast Message
Toast.makeText(MainActivity.this, "onLoggingImpression", Toast.LENGTH_SHORT).show();
}
});
// loading Ad
fbInterstitialAd.loadAd();
}
}