Skip to content

Quick Start

Start Monetizing

UjuAd Aggregation Platform Monetization Flow

StepMain ActionSub-action
1Create UjuAd accountContact business team to activate permissions
2Create UjuAd appCreate app in dashboard and bind to aggregation platform
3Create ad placementsSelect ad type, create placements
4Integrate UjuAd SDKDownload SDK, add dependencies, initialize SDK
5Aggregation managementBind third-party ad networks, set up waterfall
6SDK integration testingTest with test ad placements
7View data reportsView ad data in developer dashboard

Detailed Steps

1. Create UjuAd Account

Contact the UjuAd business team to activate a developer account and platform permissions.

2. Create App

In UjuAd Developer Dashboard > Traffic Management > App Preview, click "New App", fill in the app information, and complete the creation.

Note: After creating a UjuAd app, the app status will be "Under Review" or "Offline".

3. Create Ad Placements

3.1 Add/Edit Ad Placements

UjuAd platform supports the following ad formats:

  • Banner Ad
  • Rewarded Video
  • Native Ad
  • Interstitial Ad
  • Splash Ad

3.2 Create Ad Sources for Placements

  • Up to 30 ad placements per app by default
  • Within the same app, placement names must be unique for the same ad type

3.3 A/B Testing

You can configure A/B testing for your ad placements to compare performance.

4. Integrate UjuAd SDK

4.1 Get Integration Parameters

Required parameters: App ID, Placement ID — available in the developer dashboard.

4.2 Get the SDK

You can obtain the UjuAd SDK via:

  • Manual download: Contact the business team
  • Gradle remote dependency: Get the SDK from the Gradle repository

4.3 Android Integration Steps

  1. Add Dependencies

    Option 1: Gradle Remote Dependency (Recommended)

    groovy
    // Add dependencies in app-level build.gradle
    dependencies {
        // Core SDK (required)
        implementation "com.ujusdk:uju-ad-core:3.4.2"
        // ADX self-owned ad sources (recommended for extra ad budget)
        implementation "com.ujusdk:uju-ad-ext:1.3.1"
        // CSJ (Pangolin) adapter (optional)
        implementation "com.ujusdk:uju-csj-adapter:7.5.1.1"
        // Tencent YLH adapter (optional)
        implementation "com.ujusdk:uju-ylh-adapter:4.680.1551"
        // Baidu adapter (optional)
        implementation "com.ujusdk:uju-bd-adapter:9.45.2"
        // Kuaishou adapter (optional)
        implementation "com.ujusdk:uju-ks-adapter:5.3.20.3"
    }

    Option 2: Local AAR Files

    groovy
    // Add local dependencies in app-level build.gradle
    dependencies {
        // Core SDK (required)
        implementation files("libs/uju-ad-core-3.4.2.aar")
        // ADX self-owned ad sources (recommended)
        implementation files("libs/uju-ad-ext-1.3.1.aar")
        // Add third-party adapters as needed
        implementation files("libs/uju-csj-adapter-7.5.1.1.aar")
        implementation files("libs/uju-ylh-adapter-4.680.1551.aar")
        implementation files("libs/uju-bd-adapter-9.45.2.aar")
        implementation files("libs/uju-ks-adapter-5.3.20.3.aar")
    }
  2. Configure Permissions

Add required permissions in AndroidManifest.xml:

xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  1. Initialize SDK

Initialize the SDK in your Application class's onCreate method:

kotlin
    /**
     * Initialize SDK
     */
    private fun initializeSdk() {
        val config = UjuAdInitConfig(
            appId = "YOUR_APP_ID",
            appKey = "YOUR_APP_KEY", // appKey is the RSA public key from UjuAd dashboard
            channel = "YOUR_CHANNEL", // Required, channel ID for stats and revenue allocation
            isDebug = true, // Set to false before release
            wxAppId = "wx"
        )

        UjuAdSdk.init(this, config)
        UjuAdSdk.start(object : BaseInitListener {
            override fun onInitSuccess() {
                // SDK initialized successfully
            }

            override fun onInitFailed(error: UjuException) {
                // SDK initialization failed
            }
        })
    }

5. Load Ads

Example with Banner Ad:

kotlin
class BannerAdHelper(private val activity: Activity, private val logger: PrintLogger) {

    private var bannerAdObject: UjuAdObject? = null // Create banner ad object via UjuAdObject factory method

    fun load() {
        val adConfig = UjuAdConfig(
            placementId = DemoConfig.BANNER_ID,
            adViewSize = AdViewSize(width = 320, height = 100)
        )
        bannerAdObject = UjuAdObject.getBannerObject(activity, adConfig)
        bannerAdObject?.setAdObjectListener(object : FeedAdObjectListener {
            override fun onLoadSuccess(placementId: String) {
                // Ad loaded successfully, check isReady() before showing
                logger.add("Banner: onLoadSuccess")
            }

            override fun onLoadError(
                error: UjuException,
                placementId: String
            ) {
                logger.add("Banner: onLoadError: ${error.message}")
            }

            override fun onAdError(
                error: UjuException
            ) {
                logger.add("Banner: onAdError: ${error.message}")
            }

            override fun onAdShow() {
                val adInfo = bannerAdObject?.getAdInfo()
                logger.add("Banner: onAdShow: ecpm:${adInfo?.ecpm}")
            }

            override fun onAdClicked() {
                logger.add("Banner: onAdClicked")
            }

            override fun onAdClosed() {
                logger.add("Banner: onAdClosed")
            }

            override fun onLpClosed() {
                logger.add("Banner: onLpClosed")
            }
        })
        bannerAdObject?.load()
    }

    fun show(viewGroup: ViewGroup) {
        if (bannerAdObject?.isReady() == true) {
            bannerAdObject?.show(activity, viewGroup)
        } else {
            logger.add("Banner: Ad not ready")
        }
    }

    fun isLoaded(): Boolean {
        return bannerAdObject != null
    }

    fun destroy() {
        bannerAdObject?.destroy()
        bannerAdObject = null
    }
}

6. SDK Integration Testing

During development, use test ad placement IDs to avoid invalid clicks. Ensure:

  • Network connection is normal
  • SDK initialization succeeded
  • Ad placement ID is correct
  • At least one ad source is configured

7. View Data Reports

In the UjuAd developer dashboard, you can view detailed ad data reports including:

  • Ad requests
  • Ad impressions
  • Ad clicks
  • Click-through rate (CTR)
  • Effective cost per mille (eCPM)
  • Total revenue

FAQ

Q: Why is the ad not showing?

A: Please check:

  • Is the network connection normal?
  • Is the ad placement ID correct?
  • Did SDK initialization succeed?
  • Is an ad source configured?
  • Is test mode enabled?

Q: How to increase ad revenue?

A: Recommendations:

  • Optimize ad placement positions
  • Set reasonable ad refresh frequency
  • Test different ad type combinations
  • Adjust waterfall priority
  • Ensure app traffic quality

Q: How to add a new ad network?

A: In Aggregation Tools > Aggregation Management > Ad Network Management, click "Add Ad Network", fill in the account parameters, and complete the binding.

Technical Support

If you encounter issues during integration:

  • Documentation: Detailed API docs and sample code
  • Email: marco@ujuad.com
  • Online support: Contact via official website
  • Business cooperation: Contact business team for monetization advice