The Audience Network allows you to monetize your Android apps with Facebook ads. This guide explains how to add banner and medium rectangle ads to your app.
You can change placements in Monetization Manager to the Medium Rectangle format if these were previously configured as Banner for bidding. Similarly, for any new medium rectangle placements, navigate to the placement settings page in Monetization Manager and select Medium Rectangle (not Banner).
Placements will deliver as normal even if they are not changed to the medium rectangle format. However, to avoid confusion, we recommend that you change these placements to medium rectangle.
If you're interested in other kinds of ad units, see the list of available types.
Ensure you have completed the Android Setup Guides guides before you proceed.
In your layout file (for example: /res/layout/activity_main.xml
), add a layout that will act as a container for your Ad.
Remember the id you set here as you will be referencing it in the code later.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout ... > ... <LinearLayout android:id="@+id/banner_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" /> ... </RelativeLayout>
Add the following code at the top of your Activity in order to import the Facebook Ads SDK:
import com.facebook.ads.*;
Next, instantiate an AdView
object and make a request to load an ad. Since AdView
is a subclass of View
, you can add it to your view hierarchy just as with any other view:
private AdView adView; @Override public void onCreate(Bundle savedInstanceState) { ... // Instantiate an AdView object. // NOTE: The placement ID from the Facebook Monetization Manager identifies your App. // To get test ads, add IMG_16_9_APP_INSTALL# to your placement id. Remove this when your app is ready to serve real ads. adView = new AdView(this, "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID", AdSize.BANNER_HEIGHT_50); // Find the Ad Container LinearLayout adContainer = (LinearLayout) findViewById(R.id.banner_container); // Add the ad view to your activity layout adContainer.addView(adView); // Request an ad adView.loadAd(); }
If you are building your app for tablet, consider using the AdSize.BANNER_HEIGHT_90
size instead. In all cases, the banner width is flexible with a minimum of 320px.
Lastly, add the following code to your activity's onDestroy()
function to release resources the AdView
uses:
@Override protected void onDestroy() { if (adView != null) { adView.destroy(); } super.onDestroy(); }
Once you run the above, you should see something like this:
If you are using the default Google Android emulator, you'll add the following line of code before loading a test ad:
AdSettings.addTestDevice("HASHED ID");
.
Use the hashed ID that is printed to logcat when you first make a request to load an ad on a device.
Genymotion and physical devices do not need this step. If you would like to test with real ads, please consult our Testing Guide.
Now that you have the basic code running, you can set an AdListener
to your AdView
to listen for specific events:
import android.widget.Toast; ... protected void onCreate(Bundle savedInstanceState) { ... AdListener adListener = new AdListener() { @Override public void onError(Ad ad, AdError adError) { // Ad error callback Toast.makeText( MainActivity.this, "Error: " + adError.getErrorMessage(), Toast.LENGTH_LONG) .show(); } @Override public void onAdLoaded(Ad ad) { // Ad loaded callback } @Override public void onAdClicked(Ad ad) { // Ad clicked callback } @Override public void onLoggingImpression(Ad ad) { // Ad impression logged callback } }; // Request an ad adView.loadAd(adView.buildLoadAdConfig().withAdListener(adListener).build()); }
Audience Network supports three ad sizes to be used in your AdView
. The Banner unit's width is flexible with a minimum of 320px, and only the height is defined.
Ad Format | AdSize Reference | Size | Recommendation |
---|---|---|---|
Standard Banner |
| 320x50 | This banner is best suited to phones |
Large Banner |
| 320x90 | This banner is best suited to tablets and larger devices |
Medium Rectangle |
| 300x250 | This format is best suited for scrollable feeds or end-of-level screens |
Relevant code samples in both Swift and Objective-C are available on our GitHub sample app respository
Test your ads integration with your app.
As soon as we receive a request for an ad from your app or website, we'll review it to make sure it complies with Audience Network policies and the Facebook community standards