Quickstart
Ask AI about this page
-
Create a publisher account and register your app.
Sign up at ads.qartvelo.com as a publisher and verify your email. Under Apps, add your app with its exact Android package name (
applicationId). Copy the app key shown on the app page (app_...). See Account and apps. -
Create placements.
On the app page, add one placement per ad slot, for example:
Name Code Format Home banner home_bannerbanner Level complete game_endinterstitial Free coins reward_coinsrewarded If you use AdMob, choose AdMob as fallback and paste your AdMob ad unit id. See Placements.
-
Add the SDK.
settings.gradle.kts dependencyResolutionManagement {repositories {google()mavenCentral()maven("https://jitpack.io")}}app/build.gradle.kts dependencies {implementation("com.qartvelo.ads:core:0.3.0")implementation("com.qartvelo.ads:admob:0.3.0") // optional AdMob fallback}Terminal window npm install @qartvelo/react-native-adsandroid/build.gradle allprojects {repositories {maven {url "https://jitpack.io"content { includeGroup("com.qartvelo.ads") }}}}android/gradle.properties # Optional: enable the AdMob fallback adapterQartveloAds_admobEnabled=trueIf you enabled the AdMob adapter, add your AdMob App ID to
AndroidManifest.xml, or Google’s SDK crashes the app at start-up:AndroidManifest.xml <application><meta-dataandroid:name="com.google.android.gms.ads.APPLICATION_ID"android:value="ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY" /></application> -
Initialize in test mode.
MyApp.kt class MyApp : Application() {override fun onCreate() {super.onCreate()QartveloAds.initialize(this,"app_xxxxxxxxxxxxxxxxxxxxxxxx",QartveloAdsOptions(testMode = BuildConfig.DEBUG),)}}Register
MyAppwithandroid:name=".MyApp"on the<application>element.BuildConfig.DEBUGneedsbuildFeatures { buildConfig = true }inapp/build.gradle.kts.App.tsx import { useEffect } from 'react';import { QartveloAds } from '@qartvelo/react-native-ads';useEffect(() => {QartveloAds.initialize({appKey: 'app_xxxxxxxxxxxxxxxxxxxxxxxx',testMode: __DEV__,}).catch(() => {// The SDK keeps working on its cached config and the AdMob fallback.});}, []); -
Show an ad.
// Preload early, for example when the level startsQartveloAds.loadInterstitial("game_end")// Show at a natural breakQartveloAds.showInterstitial(this, "game_end", object : QartveloAdsListener {override fun onDismissed(info: QartveloAdsAdInfo) = continueGame()override fun onNoAdAvailable(placementId: String, format: AdFormat) = continueGame()})activity_main.xml <com.qartvelo.sdk.QartveloAdsBannerViewandroid:id="@+id/banner"android:layout_width="match_parent"android:layout_height="wrap_content"app:qartvelo_placementId="home_banner" />findViewById<QartveloAdsBannerView>(R.id.banner).load()import { QartveloAds, QartveloAdsBanner } from '@qartvelo/react-native-ads';await QartveloAds.loadInterstitial('game_end');const { shown } = await QartveloAds.showInterstitial('game_end'); // resolves on dismiss<QartveloAdsBanner placementId="home_banner" style={{ width: '100%' }} />;Rebuild the native app after installing:
npx react-native run-android.You should see a purple creative labelled TEST AD. Set
testForceNoFilltotrueas well to see your AdMob fallback (Google’s test ad) instead. -
Go live.
Wait for the app to be approved, turn test mode off for release builds and work through the release checklist.
Use an AI assistant instead
Section titled “Use an AI assistant instead”Paste this into Claude Code, Cursor or Copilot Chat in your project:
Integrate the Qartvelo Ads Android SDK into this app following https://developers.qartvelo.com/llms-full.txt.App key: app_xxxxxxxxxxxxxxxxxxxxxxxx. Placements: home_banner (banner), game_end (interstitial),reward_coins (rewarded). Use test mode in debug builds and keep my existing AdMob units as fallback.More prompts and the MCP server are in Build with AI.