Audience Network

Quick start

Updated: Jul 7, 2026
Copy for LLM
Audience Network is Meta’s monetization SDK that lets you show ads from Facebook advertisers in your Android, iOS, or Unity app. This guide walks you through every step, from publishing your app to displaying live ads.
Audience Network is bidding only
Audience Network exclusively uses bidding to serve ads in Android and iOS apps. You cannot manually set CPMs or waterfall positions.

Step 1: Build and publish your app

Before you can use Audience Network, your app must have a live listing on the Google Play Store or Apple App Store. Monetization Manager looks up your app by its store URL or bundle ID — it cannot register a property for an unlisted app.
If your app is not yet published, build and release an initial version first. You can add the Audience Network SDK in a later update once your app is live.

Step 2: Set up Monetization Manager

Monetization Manager is where you register your app and create the ad placements that generate your Placement IDs. You need these IDs before writing any SDK code.

Create a Monetization Manager account

If you don’t already have one, set up Monetization Manager. You need a Facebook account and a Meta Business Suite account.
Meta Business Suite is required
Monetization Manager runs inside Meta Business Suite. You cannot access it with a personal Facebook account alone. If your organization already has a Meta Business Suite account, ask an admin to grant you access rather than creating a separate one — multiple Meta Business Suite accounts for the same organization can cause payout and property management issues later.

Register your app and create ad placements

  1. In Monetization Manager, select Add Property and choose Mobile App.
  2. Enter your app’s name and select the platform (Android, iOS, or both).
  3. Add your app’s store URL and app name.
  4. Create at least one Ad Placement for each format you plan to implement. Select the ad format (Banner, Interstitial, Rewarded Video, and so on) and give each placement a descriptive name.
  5. Copy the Placement ID for each placement. Placement IDs look like 1234567890123456_0987654321098765 — a long numeric string with an underscore in the middle. You’ll use these in your SDK code.
  6. You will also need to save your Property ID from Integration>Properties. Hover over the information icon and click the copy icon.
Create placements before writing code
Your Placement IDs must exist in Monetization Manager before you reference them in your app. Using a Placement ID that does not exist or is for the wrong format will cause the ad request to fail silently. If your test ads are not loading, verify that the Placement ID in your code matches an active placement in Monetization Manager and that the format (Banner, Interstitial, and so on) matches too.

Step 3: Add the SDK

Choose your platform:

Prerequisites

  • Android Studio installed
  • Minimum SDK version: API 24 (Android 7.0)
  • Google Play Services configured in your project

Add the SDK to your project

Open your app-level build.gradle file and add the Audience Network SDK dependency:
dependencies {
    implementation 'com.facebook.android:audience-network-sdk:6.+'
}
Sync your Gradle files (File > Sync Project with Gradle Files in Android Studio).
Google Play Services is required
The Audience Network SDK requires play-services-ads-identifier and play-services-basement. If your project is not already configured to use Google Play Services, follow Google’s setup guide. Missing Play Services causes a runtime exception when the SDK initializes.
Gradle sync failures
If the SDK dependency does not resolve after syncing, check that:
  • Your project’s repositories block includes mavenCentral().
  • You are not pinned to a specific SDK version that does not exist. The 6.+ syntax picks the latest 6.x release automatically.
  • You are connected to the internet (Gradle downloads the artifact on first sync).
Restart Android Studio after resolving these issues, then sync again.

Initialize the SDK

Initialize the Audience Network SDK as early as possible, ideally in your Application class:
import com.facebook.ads.AudienceNetworkAds;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        AudienceNetworkAds.initialize(this);
    }
}
For full initialization options and setup details, see Initialize the SDK and Get Started with Android.

Step 4: Implement an ad format

Choose the ad format you want to display and follow the implementation guide for your platform. Pass the Placement ID you copied from Monetization Manager to the ad object — do not hardcode test placement IDs in production builds.
FormatAndroidiOSUnity
Banner
Interstitial
Rewarded video
Native
Native banner
Rewarded interstitial
Format must match your Monetization Manager placement
If you create a Banner placement in Monetization Manager but call it with Interstitial ad code (or vice versa), the ad request will fail. The format you implement in code must match the format you selected when creating the placement.

Handle ad lifecycle callbacks

Every ad format exposes callbacks for load success, load failure, impression, and click. Implement all of them — especially the error callback — so you can log failures during development and handle them gracefully in production.
If onError fires, the error code and message tell you whether the failure is a configuration issue (wrong Placement ID, format mismatch), a no-fill condition (no bid won the auction), or a network error. During testing, a no-fill error when test mode is off is expected — switch to test mode to get consistent ad delivery.

Step 5: Test your integration

Before going live, verify that your ads load and display correctly using test mode.

Enable test mode

Enable test mode early in your app startup, before you make any ad requests:
// Enable test mode — remove before publishing
AdSettings.setTestMode(true);
With test mode on, the SDK returns test ads regardless of whether real bids are available. This lets you verify your integration end-to-end without needing live auction traffic.

What to verify

  1. Build and run your app. A test ad should appear in each placement you implemented.
  2. Confirm the ad lifecycle callbacks fire in the expected order: load success → impression (when the ad becomes visible) → click (if you tap it).
  3. Test the failure path: temporarily use an invalid Placement ID and confirm your error handler is called and your app does not crash.
  4. For rewarded video and rewarded interstitial, confirm the reward callback fires correctly when the user finishes watching.

Disable test mode before shipping

AdSettings.setTestMode(false);
AdSettings.clearTestDevices();
Test mode left in production
Shipping with test mode enabled means your app serves test ads to real users — you earn zero revenue. This is one of the most common integration mistakes. Before building your release binary, verify that all test mode calls are removed or wrapped in a debug build check (for example, if (BuildConfig.DEBUG) on Android).
For detailed testing guidance, including the Onboarding Debugger and device allow-listing, see Testing your integration.

Step 6: Go live

Once you have verified your integration end-to-end with test ads:
  1. Remove test mode — confirm no test mode calls remain in your production build.
  2. Verify your placements in Monetization Manager — confirm your app and all placements are active and not paused.
  3. Complete the Mobile App Checklist — review the checklist before submitting to the app store to catch any missed integration requirements.
  4. Publish your app update — submit the update to the app store with Audience Network integrated.
After your app is live, use Monetization Manager or the Reporting API v2 to monitor performance.
App store review
Some app stores (especially Apple) may review your app more carefully when a new ad network is added. Ensure your privacy policy is updated to disclose Audience Network data collection, and that your Info.plist privacy manifest entries are complete. Missing privacy manifest entries can delay or block App Store approval.

Common issues

SymptomLikely causeWhat to do
Ad requests return no fill
Live mode, no real auction traffic
Enable test mode during development
Ad loads but does not display
Missing layout container or show() call
Confirm you call show() (or add the ad view to your layout) after the load success callback
Crash on ad load (iOS)
xcframework set to “Do Not Embed”
Change to Embed & Sign in target General settings
Linker errors (iOS CocoaPods)
Opened .xcodeproj instead of .xcworkspace
Close Xcode, open the .xcworkspace file
ClassNotFoundException (Android)
Google Play Services missing
Add play-services-ads-identifier dependency
Placement ID error
Format mismatch or wrong Placement ID
Verify the ID in Monetization Manager and that the format matches
Zero revenue after launch
Test mode left on in production
Remove test mode calls before your production build
Attribution not working (iOS)
Missing SKAdNetwork Info.plist entries

Next steps