मुफ़्त APK बनाएँ

कमाई करना

AdMob इंटीग्रेशन

मॉनेटाइज़ेशन सेटअप

1AdMob अकाउंट बनाएँ#

Google AdMob अकाउंट के लिए साइन अप करें। शुरू करने के लिए आपको एक Google अकाउंट चाहिए। AdMob Google का मोबाइल विज्ञापन प्लेटफ़ॉर्म है।

2अपना ऐप जोड़ें#

AdMob डैशबोर्ड में:

  • साइडबार में 'Apps' पर क्लिक करें
  • 'Add App' पर क्लिक करें
  • 'Is your app listed on a supported app store?' के लिए 'No' चुनें
  • अपने ऐप का नाम डालें
  • प्लेटफ़ॉर्म के रूप में 'Android' चुनें
  • 'Add' पर क्लिक करें

3App ID पाएँ#

अपना ऐप बनाने के बाद:

  • दिखाया गया App ID कॉपी करें (फ़ॉर्मेट: ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX)
  • यह आपके Ad Unit ID से अलग है
  • आप इसे AndroidManifest.xml में इस्तेमाल करेंगे
App ID format:
ca-app-pub-1234567890123456~1234567890

4Ad Unit बनाएँ (Banner)#

आपके AdMob ऐप में:

  • 'Ad units' टैब पर क्लिक करें
  • 'Add ad unit' पर क्लिक करें
  • 'Banner' चुनें
  • ad unit का नाम डालें (जैसे 'Main Banner')
  • 'Create ad unit' पर क्लिक करें
  • Ad Unit ID कॉपी करें
Banner Ad Unit ID format:
ca-app-pub-1234567890123456/1234567890

5AppMint में सेटअप#

AppMint में, चरण 3:

  1. 'AdMob Ads' ON करें और अपना AdMob App ID पेस्ट करें (जिसमें ~ हो)
  2. Ad Control: 'Automatic' ही रखें - ऐप आपके लिए विज्ञापन लगाता है
  3. 'Banner Ad' ON करें, Ad Position (Bottom या Top) चुनें और अपना Banner Ad Unit ID पेस्ट करें (जिसमें / हो)
  4. बाकी सेटिंग्स जारी रखें और अपना ऐप बनाएँ
Ad Unit ID (not App ID):
ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY

6अपने ऐप में टेस्ट विज्ञापन#

डेवलपमेंट के दौरान नीति उल्लंघन से बचने के लिए Google के आधिकारिक टेस्ट ID इस्तेमाल करें। इन्हें कॉपी करके जनरेटर में पेस्ट करें:

📋 AdMob App ID:
ca-app-pub-3940256099942544~3347511713

📋 Banner Ad Unit ID:
ca-app-pub-3940256099942544/6300978111

📋 Interstitial Ad Unit ID:
ca-app-pub-3940256099942544/1033173712

📋 Rewarded Ad Unit ID:
ca-app-pub-3940256099942544/5224354917

📋 Publisher ID:
pub-3940256099942544

📋 Developer Website:
https://example.com

ये टेस्ट ID असली जैसे दिखने वाले विज्ञापन दिखाते हैं, बिना कमाई बनाए या नीतियों का उल्लंघन किए। प्रोडक्शन के लिए इन्हें अपने असली ID से बदलें।

Test IDs for Generator:

AdMob App ID:       ca-app-pub-3940256099942544~3347511713
Banner Ad ID:       ca-app-pub-3940256099942544/6300978111
Interstitial ID:    ca-app-pub-3940256099942544/1033173712
Rewarded Ad ID:     ca-app-pub-3940256099942544/5224354917
Publisher ID:       pub-3940256099942544
Developer URL:      https://example.com

7इंटरस्टीशियल विज्ञापन#

इंटरस्टीशियल विज्ञापन फ़ुल-स्क्रीन विज्ञापन होते हैं जो ऐप का पूरा इंटरफ़ेस ढक लेते हैं। यूज़र उन्हें बंद करके ऐप में लौट सकते हैं।

📺 चालू कैसे करें (चरण 3, Ad Control 'Automatic'):

  1. 'Full Screen Ad' ON करें
  2. Ad Type: 'Interstitial Ad' चुनें
  3. अपना Interstitial Ad Unit ID डालें (या टेस्ट विज्ञापनों के लिए खाली छोड़ें)
  4. Trigger Mode चुनें:

🔄 नेविगेशन के बाद (डिफ़ॉल्ट):
विज्ञापन हर N पेज नेविगेशन के बाद दिखता है। उदाहरण के लिए, अगर 4 सेट है, तो विज्ञापन 4वें, 8वें, 12वें पेज लोड के बाद, और इसी तरह आता है।

📱 App Open:
ऐप पहली बार खुलने पर स्प्लैश स्क्रीन के तुरंत बाद विज्ञापन एक बार दिखता है।

👆 ऑन डिमांड:
कोई ऑटोमैटिक विज्ञापन नहीं - आपका पेज टैप पर WebToApk.showInterstitialAd() से एक दिखाता है।

⚠️ Ad Type एक ही चुना जाता है: Interstitial या Rewarded, दोनों नहीं।

Example: every 4 page navigations

Page 1 → No ad
Page 2 → No ad
Page 3 → No ad
Page 4 → 📺 Interstitial Ad shown!
Page 5 → No ad
Page 6 → No ad
Page 7 → No ad
Page 8 → 📺 Interstitial Ad shown!
...

8रिवॉर्डेड विज्ञापन#

रिवॉर्डेड विज्ञापन फ़ुल-स्क्रीन वीडियो विज्ञापन होते हैं, जिन्हें यूज़र इनाम के बदले देखते हैं। इनसे बैनर या इंटरस्टीशियल विज्ञापनों से ज़्यादा कमाई होती है।

🎁 चालू कैसे करें (चरण 3, Ad Control 'Automatic'):

  1. 'Full Screen Ad' ON करें
  2. Ad Type: 'Rewarded Ad' चुनें
  3. अपना Rewarded Ad Unit ID डालें (या टेस्ट विज्ञापनों के लिए खाली छोड़ें)
  4. Trigger Mode चुनें:

🔄 नेविगेशन के बाद (डिफ़ॉल्ट):
इंटरस्टीशियल जैसा ही - विज्ञापन हर N पेज लोड के बाद दिखता है। 'Show ad after every N page navigations' से N सेट होता है। डिफ़ॉल्ट 4 है।

📱 App Open:
ऐप पहली बार खुलने पर स्प्लैश के बाद रिवॉर्ड वीडियो एक बार दिखता है।

👆 ऑन डिमांड:
कोई ऑटोमैटिक विज्ञापन नहीं - आपके पेज का अपना 'watch ad to earn' बटन WebToApk.showRewardedAd() को कॉल करता है।

💡 कितने नेविगेशन?
कम = ज़्यादा विज्ञापन (ज़्यादा कमाई पर यूज़र अनुभव खराब)। ज़्यादा = कम विज्ञापन (अनुभव बेहतर पर कमाई कम)। सुझाव: 3-5।

⚠️ Google की नीति: रिवॉर्डेड विज्ञापनों के लिए यूज़र की मंज़ूरी चाहिए। After Navigations और App Open मोड में आपका ऐप पहले 'Watch an ad?' प्रॉम्प्ट और 'No thanks' बटन दिखाता है; विज्ञापन तभी चलता है जब वे हाँ कहें।

Revenue comparison (approximate):

Banner Ads:       $0.10 - $0.50 per 1000 views
Interstitial Ads: $1 - $5 per 1000 views
Rewarded Ads:     $5 - $15 per 1000 views

Recommended N (page navigations per ad):
Aggressive:  2-3 (more ads, more revenue)
Balanced:    4-5 (recommended)
Conservative: 6-10 (fewer ads, better UX)

⚠️ AdMob को EEA, UK, स्विट्ज़रलैंड और US राज्यों के यूज़र्स के लिए सहमति का तरीका चाहिए।

इसे जनरेट किया गया ऐप अपने आप संभालता है, Google के User Messaging Platform (UMP) से। ऐप ये करेगा:

  • विज्ञापन दिखाने से पहले EEA/UK/स्विट्ज़रलैंड के यूज़र्स को सहमति डायलॉग दिखाएँ
  • लागू होने वाले US राज्यों के यूज़र्स को ऑप्ट-आउट डायलॉग दिखाएँ
  • विज्ञापन तभी माँगें जब सहमति मिल चुकी हो

आपको क्या करना है:

  1. AdMob कंसोल में → Privacy & messaging → Create a European regulations message
  2. AdMob कंसोल में → Privacy & messaging → Create a US state regulations message
  3. जनरेटर में अपना प्राइवेसी पॉलिसी URL सेट करें (चरण 3 या चरण 4)
  4. पक्का करें कि आपकी प्राइवेसी पॉलिसी में AdMob विज्ञापनों का ज़िक्र हो

⚠️ इस सेटअप के बिना AdMob एक पॉलिसी चेतावनी दिखा सकता है: 'Consent requirement: No CMP'

10विज्ञापन समीक्षा प्रक्रिया#

अपना ऐप प्रकाशित करने के बाद:

  • AdMob आपके ऐप की समीक्षा करेगा (आमतौर पर 24-48 घंटे लगते हैं)
  • शुरू में आपको टेस्ट विज्ञापन दिखेंगे
  • मंज़ूरी मिलने के बाद असली विज्ञापन दिखने लगेंगे
  • अपने ऐप का कंटेंट नीतियों के अनुसार रखें

11पेमेंट चालू करें#

विज्ञापन की कमाई पाने के लिए:

  • AdMob डैशबोर्ड में 'Payments' पर जाएँ
  • पेमेंट का तरीका जोड़ें (बैंक अकाउंट या दूसरे विकल्प)
  • अपना पता वेरिफ़ाई करें
  • टैक्स की जानकारी सेट करें
  • $100 की सीमा पूरी होने के बाद भुगतान हर महीने किया जाता है

12सर्वोत्तम तरीके#

✅ बैनर की जगह: नीचे का बैनर कम परेशान करता है और यूज़र अनुभव बेहतर रहता है

✅ Interstitial/Rewarded: एक चुनें, दोनों नहीं। रिवॉर्डेड विज्ञापन ज़्यादा कमाते हैं पर यूज़र की भागीदारी माँगते हैं

✅ Action Count: विज्ञापनों के बीच 4-5 नेविगेशन से शुरू करें। बहुत बार दिखाने पर खराब रिव्यू मिलते हैं

✅ पहले टेस्ट करें: डेवलपमेंट के दौरान हमेशा टेस्ट ad unit से जाँच करें

✅ प्रदर्शन पर नज़र रखें: कमाई और मेट्रिक्स के लिए AdMob डैशबोर्ड नियमित रूप से देखें

⚠️ क्लिक न करें: अपने ही विज्ञापनों पर कभी क्लिक न करें - यह AdMob नीति का उल्लंघन है

⚠️ अच्छा कंटेंट: पक्का करें कि आपका ऐप कुछ काम का दे और AdMob की नीतियों का पालन करे

💡 प्रो टिप: ज़्यादा से ज़्यादा कमाई के लिए Banner (हमेशा दिखने वाला) + Interstitial या Rewarded (कभी-कभी) को मिलाएँ

13समस्या निवारण#

आम समस्याएँ और समाधान:

  • कोई विज्ञापन नहीं दिख रहा: जाँचें कि आप सही Ad Unit ID इस्तेमाल कर रहे हैं (App ID नहीं)
  • टेस्ट विज्ञापन चलते हैं पर असली नहीं: AdMob की समीक्षा पूरी होने का इंतज़ार करें
  • विज्ञापन का अनुरोध विफल: इंटरनेट कनेक्शन और AdMob अकाउंट की स्थिति जाँचें
  • अकाउंट सस्पेंड हुआ: AdMob नीतियाँ पढ़ें और ज़रूरत हो तो अपील करें

14डेवलपर-नियंत्रित विज्ञापन: हर विज्ञापन खुद लगाएँ#

नीचे दिया पूरा डेमो पेज डाउनलोड करें (Coin Runner): लेआउट के अंदर एक बैनर, लेवल के बीच एक इंटरस्टीशियल, 'Watch ad to earn 50 coins' बटन, एक 300×250 रेक्टैंगल, app-open स्विच और हर नतीजे का लाइव लॉग। इसे ZIP करें, ऑफ़लाइन ZIP के रूप में अपलोड करें, पहले से भरे टेस्ट ID के साथ Developer-controlled चुनें और बिल्ड करें - हर बटन अपने बारे में खुद बताता है।

ऊपर के विकल्प Automatic मोड के हैं: ऐप आपके लिए बैनर और फ़ुल-पेज या रिवॉर्डेड विज्ञापन दिखाता है। अगर आप AdMob के हर फ़ॉर्मेट को चाहते हैं और हर एक को अपने पेज में ठीक वहाँ लगाने की आज़ादी चाहते हैं, तो इसके बजाय चरण 3 में 'Ad Control → Developer-controlled' चुनें।

इस मोड में कुछ भी ऑटोमैटिक नहीं होता। आप जिन फ़ॉर्मेट का इस्तेमाल करते हैं, उनमें से हर एक के लिए एक ad unit ID डालें - banner, medium rectangle (300×250), interstitial, rewarded, rewarded interstitial, app-open - और बाकी खाली छोड़ दें। फिर आपका पेज window.AppMintAds के ज़रिए सब कुछ चलाता है:

  • AppMintAds.banner.attach('#slot', {size:'banner'|'medium_rectangle'}) - आपके बताए एलिमेंट के ऊपर रखा गया बैनर, कार्ड में, सूची के आइटम के बीच, कहीं भी। यह स्क्रॉल पर एलिमेंट के साथ चलता है; detach() उसे हटा देता है। एक साथ दो तक।
  • await AppMintAds.load('interstitial') → {ok:true} या {ok:false, code:'no_fill'|'network'|'invalid_unit'|'consent'|'ad_free'|'disabled'}
  • await AppMintAds.show('rewarded') → {shown:true, earned:true, reward:{type,amount}} या {shown:false, reason}
  • AppMintAds.isReady('interstitial') - अपना बटन इसी के आधार पर चालू करें
  • AppMintAds.appOpen.setEnabled(false) - यूज़र के किसी काम के बीच में होने पर app-open विज्ञापन रोकें

AppMintAds सिर्फ़ इंस्टॉल किए गए ऐप के अंदर मौजूद होता है - इसलिए हमेशा फ़ीचर-डिटेक्ट करें (if (window.AppMintAds) …) ताकि आपका पेज ब्राउज़र में भी चले। Google के नियम अब भी लागू हैं और ऐप उन्हें लागू करता है: रिवॉर्डेड विज्ञापन सिर्फ़ यूज़र के अपने टैप से चलता है (आपका 'Watch ad' बटन ही सहमति है), इंटरस्टीशियल के बीच 60 सेकंड का अंतर रहता है, और किसी ज़रूरी कार्रवाई के ऊपर विज्ञापन कभी न रखें।

// Feature-detect: AppMintAds exists only in the installed app
const ads = window.AppMintAds;

// 1. A banner INSIDE your layout — <div id="ad-slot"></div> reserves the space
if (ads) {
  const r = await ads.banner.attach('#ad-slot', { size: 'banner' });
  console.log(r.ok ? 'banner ' + r.width + 'x' + r.height : 'no banner: ' + r.code);
}

// 2. A full-page ad at a natural break (between levels), never on every tap
async function levelFinished() {
  if (ads && ads.isReady('interstitial')) await ads.show('interstitial');
  showNextLevel();          // continues whether or not an ad was shown
}

// 3. A 'Watch ad to earn 50 coins' button — the tap is the user's opt-in
watchBtn.onclick = async () => {
  if (!ads) return;                                 // browser: no native ads
  // From a tap the ad plays. Without one (a timer, a route change) the app shows
  // AdMob's "Watch an ad? / No thanks" intro first and answers code 'declined'.
  const r = await ads.show('rewarded');
  if (r.earned) addCoins(r.reward.amount || 50);   // grant ONLY when earned
  else if (r.reason === 'ad_free') addCoins(50);    // premium user: grant without an ad
  else toast('No ad available right now');          // no popup, no Skip button
};

// 4. Preload and keep the button honest
ads?.load('rewarded').then(r => { watchBtn.disabled = !r.ok; });

ऐप में, इस चरण का बटन इन्हें आपके फ़ोन में सेव करता है। यहाँ ये सीधे डाउनलोड होते हैं।

admob-developer-demo.html HTML · 12 KB

15विज्ञापन स्टेटस इवेंट: जानें हर अनुरोध का क्या हुआ#

डेवलपर-नियंत्रित हर विज्ञापन अपना पूरा जीवन-चक्र एक ही इवेंट appmint:ad पर बताता है, ताकि आप फ़िल लॉग कर सकें, विफलताओं पर प्रतिक्रिया दे सकें और अपना UI चला सकें:

{ type, phase, slot?, code?, adCode?, message?, width?, height?, reward?, earned? }

  • type: banner | mrec | interstitial | rewarded | rewarded_interstitial | app_open
  • phase: loading → loaded | failed → opened → impression → clicked → closed, साथ में rewarded (इनाम मिला) और show_failed
  • code (failed होने पर): no_fill | network | invalid_unit | internal - adCode AdMob का अपना नंबर है, message उसका टेक्स्ट
  • slot: कौन सा बैनर स्लॉट, banner/mrec के लिए

प्रॉमिस हर कॉल का वही जवाब देते हैं; इवेंट आपको सब कुछ देता है, उन विज्ञापनों समेत जिनके लिए आपने show() नहीं बुलाया (app-open विज्ञापन, बैनर रिफ़्रेश)। Automatic मोड में AppMintAds मौजूद रहता है पर code 'automatic_mode' लौटाता है - वहाँ WebToApk.showInterstitialAd()/showRewardedAd() कॉल और appmint:reward / appmint:ad-closed / appmint:ad-unavailable इवेंट इस्तेमाल करें।

window.addEventListener('appmint:ad', e => {
  const a = e.detail;
  console.log(a.type, a.phase, a.code || '', a.message || '');
  if (a.phase === 'failed' && a.code === 'no_fill') analytics.track('ad_no_fill', a);
  if (a.type === 'rewarded' && a.phase === 'rewarded') console.log('earned', a.reward);
  if (a.type === 'banner' && a.phase === 'loaded') console.log('banner ' + a.width + 'x' + a.height + ' in ' + a.slot);
});

// What can this build serve? (guard it — in a browser AppMintAds is undefined)
if (window.AppMintAds) console.log(AppMintAds.config());
// → { control: 'developer', formats: { banner: true, mrec: false, interstitial: true, ... } }

यह पेज ऐप के अंदर की इंटीग्रेशन गाइड से बनाया गया है, इसलिए इसमें वही लिखा है जो मौजूदा बिल्ड में है। इसे Markdown में पढ़ें.

2026-10-03 को शिप की गई गाइड से मिलान किया गया।