Para kazanma
AdMob Entegrasyonu
Para Kazanma Kurulumu
1AdMob Hesabı Oluşturun#
Bir Google AdMob hesabına kaydolun. Başlamak için bir Google hesabına ihtiyacınız var. AdMob, Google'ın mobil reklam platformudur.
2Uygulamanızı Ekleyin#
AdMob panosunda:
- Kenar çubuğunda 'Uygulamalar'a tıklayın
- 'Uygulama Ekle'ye tıklayın
- 'Uygulamanız desteklenen bir uygulama mağazasında listeleniyor mu?' sorusu için 'Hayır'ı seçin
- Uygulama adınızı girin
- Platform olarak 'Android'i seçin
- 'Ekle'ye tıklayın
3Uygulama Kimliğini Alın#
Uygulamanızı oluşturduktan sonra:
- Gösterilen Uygulama Kimliğini kopyalayın (biçim: ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX)
- Bu, Reklam Birimi Kimliğinizden farklıdır
- Bunu AndroidManifest.xml içinde kullanacaksınız
App ID format:
ca-app-pub-1234567890123456~12345678904Reklam Birimi Oluştur (Banner)#
AdMob uygulamanızda:
- 'Reklam birimleri' sekmesine tıklayın
- 'Reklam birimi ekle'ye tıklayın
- 'Banner'ı seçin
- Reklam birimi adını girin (ör. 'Ana Banner')
- 'Reklam birimi oluştur'a tıklayın
- Reklam Birimi Kimliğini kopyalayın
Banner Ad Unit ID format:
ca-app-pub-1234567890123456/12345678905AppMint'te Kurulum#
AppMint'te, Adım 3:
- 'AdMob Reklamları'nı AÇIN ve AdMob Uygulama Kimliğinizi yapıştırın (~ içeren)
- Reklam Kontrolü: 'Otomatik'i koruyun - uygulama reklamları sizin için yerleştirir
- 'Banner Reklam'ı AÇIN, Reklam Konumunu (Alt veya Üst) seçin ve Banner Reklam Birimi Kimliğinizi yapıştırın (/ içeren)
- Diğer ayarlarla devam edin ve uygulamanızı oluşturun
Ad Unit ID (not App ID):
ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY6Uygulamanızda Test Reklamları#
Geliştirme sırasında politika ihlallerini önlemek için Google'ın resmi test kimliklerini kullanın. Bunları oluşturucuya kopyalayıp yapıştırın:
📋 AdMob Uygulama Kimliği:
ca-app-pub-3940256099942544~3347511713
📋 Banner Reklam Birimi Kimliği:
ca-app-pub-3940256099942544/6300978111
📋 Geçiş Reklam Birimi Kimliği:
ca-app-pub-3940256099942544/1033173712
📋 Ödüllü Reklam Birimi Kimliği:
ca-app-pub-3940256099942544/5224354917
📋 Yayıncı Kimliği:
pub-3940256099942544
📋 Geliştirici Web Sitesi:
https://example.com
Bu test kimlikleri gelir oluşturmadan veya politikaları ihlal etmeden gerçekçi görünen reklamlar gösterir. Yayın için bunları gerçek kimliklerinizle değiştirin.
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.com7Geçiş Reklamları#
Geçiş reklamları, uygulama arayüzünün tamamını kaplayan tam ekran reklamlardır. Kullanıcılar bunları kapatarak uygulamaya dönebilir.
📺 Nasıl Etkinleştirilir (Adım 3, Reklam Kontrolü 'Otomatik'):
- 'Tam Ekran Reklam'ı AÇIN
- Reklam Türü: 'Geçiş Reklamı'nı seçin
- Geçiş Reklam Birimi Kimliğinizi girin (veya test reklamları için boş bırakın)
- Tetikleme Modunu seçin:
🔄 Gezinmelerden Sonra (varsayılan):
Reklam her N sayfa gezinmesinden sonra gösterilir. Örneğin 4 olarak ayarlanırsa reklam 4., 8., 12. sayfa yüklemesinden sonra görünür ve böyle devam eder.
📱 Uygulama Açılışı:
Reklam, uygulama ilk açıldığında açılış ekranından hemen sonra bir kez gösterilir.
👆 İsteğe Bağlı:
Otomatik reklam yok - sayfanız WebToApk.showInterstitialAd() ile bir dokunuşta reklam gösterir.
⚠️ Reklam Türü tek bir seçimdir: Geçiş VEYA Ödüllü, ikisi birden değil.
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Ödüllü Reklamlar#
Ödüllü reklamlar, kullanıcıların bir ödül karşılığında izlediği tam ekran video reklamlardır. Banner veya geçiş reklamlarından daha yüksek gelir sağlarlar.
🎁 Nasıl Etkinleştirilir (Adım 3, Reklam Kontrolü 'Otomatik'):
- 'Tam Ekran Reklam'ı AÇIN
- Reklam Türü: 'Ödüllü Reklam'ı seçin
- Ödüllü Reklam Birimi Kimliğinizi girin (veya test reklamları için boş bırakın)
- Tetikleme Modunu seçin:
🔄 Gezinmelerden Sonra (varsayılan):
Geçiş reklamına benzer - reklam her N sayfa yüklemesinden sonra gösterilir. 'Her N sayfa gezinmesinden sonra reklam göster' N değerini belirler. Varsayılan 4'tür.
📱 Uygulama Açılışı:
Ödül videosu, uygulama açılış ekranından sonra ilk açıldığında bir kez gösterilir.
👆 İsteğe Bağlı:
Otomatik reklam yok - sayfanızın kendi 'kazanmak için reklam izle' düğmesi WebToApk.showRewardedAd() çağırır.
💡 Kaç gezinme?
Daha az = daha çok reklam (daha fazla gelir ama daha kötü kullanıcı deneyimi). Daha çok = daha az reklam (daha iyi kullanıcı deneyimi ama daha az gelir). Önerilen: 3-5.
⚠️ Google politikası: ödüllü reklamlar kullanıcının iznini gerektirir. Gezinmelerden Sonra ve Uygulama Açılışı modlarında uygulamanız önce 'Reklam izlensin mi?' istemini 'Hayır, teşekkürler' düğmesiyle gösterir; reklam yalnızca kabul ederlerse oynar.
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)9Onay ve Gizlilik Politikası (Zorunlu)#
⚠️ AdMob, AEA, Birleşik Krallık, İsviçre ve ABD eyaletlerindeki kullanıcılar için bir onay mekanizması gerektirir.
Bu, oluşturulan uygulama tarafından Google'ın Kullanıcı Mesajlaşma Platformu (UMP) kullanılarak otomatik olarak yapılır. Uygulama şunları yapacak:
- Reklam göstermeden önce AEA/Birleşik Krallık/İsviçre kullanıcılarına bir onay iletişim kutusu gösterin
- İlgili ABD eyaletlerindeki kullanıcılara vazgeçme iletişim kutusu gösterin
- Reklamları yalnızca onay alındıktan sonra isteyin
SİZİN yapmanız gerekenler:
- AdMob konsolunda → Gizlilik ve mesajlaşma → Avrupa düzenlemeleri mesajı oluştur
- AdMob konsolunda → Gizlilik ve mesajlaşma → ABD eyalet düzenlemeleri mesajı oluştur
- Gizlilik Politikası URL'nizi oluşturucuda ayarlayın (Adım 3 veya Adım 4)
- Gizlilik politikanızda AdMob reklamcılığından bahsedildiğinden emin olun
⚠️ Bu kurulum olmadan AdMob bir politika uyarısı gösterebilir: 'Consent requirement: No CMP'
10Reklam İnceleme Süreci#
Uygulamanızı yayınladıktan sonra:
- AdMob uygulamanızı inceleyecek (genellikle 24-48 saat sürer)
- Başlangıçta test reklamları göreceksiniz
- Onaylandıktan sonra gerçek reklamlar gösterilmeye başlar
- Uygulama içeriğinizi politikalara uygun tutun
11Ödemeleri Etkinleştirin#
Reklam gelirini almak için:
- AdMob panosunda 'Ödemeler'e gidin
- Ödeme yöntemi ekleyin (banka hesabı veya diğer seçenekler)
- Adresinizi doğrulayın
- Vergi bilgilerini ayarlayın
- Ödemeler 100 $ eşiğine ulaşıldıktan sonra aylık yapılır
12En İyi Uygulamalar#
✅ Banner Yerleşimi: Alttaki banner daha az rahatsız edicidir ve daha iyi kullanıcı deneyimi sunar
✅ Geçiş/Ödüllü: Birini seçin, ikisini birden değil. Ödüllü reklamlar daha çok kazandırır ama kullanıcı etkileşimi gerektirir
✅ Eylem Sayısı: Reklamlar arasında 4-5 gezinmeyle başlayın. Çok sık = kötü yorumlar
✅ Önce Test Edin: Geliştirme sırasında her zaman test reklam birimleriyle deneyin
✅ Performansı İzleyin: Kazanç ve metrikler için AdMob panosunu düzenli kontrol edin
⚠️ Tıklamayın: Kendi reklamlarınıza asla tıklamayın - bu AdMob politikasını ihlal eder
⚠️ Kaliteli İçerik: Uygulamanızın değer sunduğundan ve AdMob politikalarına uyduğundan emin olun
💡 İpucu: Maksimum gelir için Banner (her zaman görünür) + Geçiş veya Ödüllü (periyodik) birleştirin
13Sorun Giderme#
Yaygın sorunlar ve çözümleri:
- Reklam gösterilmiyor: Doğru Reklam Birimi Kimliğini kullanıp kullanmadığınızı kontrol edin (Uygulama Kimliği değil)
- Test reklamları çalışıyor ama gerçek reklamlar çalışmıyor: AdMob incelemesinin tamamlanmasını bekleyin
- Reklam isteği başarısız: İnternet bağlantısını ve AdMob hesap durumunu kontrol edin
- Hesap askıya alındı: AdMob politikalarını inceleyin ve gerekirse itiraz edin
14Geliştirici kontrollü reklamlar: her reklamı kendiniz yerleştirin#
Aşağıdaki tam demo sayfasını (Coin Runner) indirin: düzenin içinde bir banner, seviyeler arasında bir geçiş reklamı, bir 'Reklam izle, 50 jeton kazan' düğmesi, 300×250 dikdörtgen, uygulama açılış anahtarı ve her sonucun canlı günlüğü. Zip'leyin, Çevrimdışı ZIP olarak yükleyin, önceden doldurulmuş test kimlikleriyle Geliştirici kontrollü'yü seçin, derleyin - her düğme kendini açıklar.
Yukarıdaki seçenekler Otomatik moddur: uygulama banner'ı ve tam sayfa veya ödüllü reklamı sizin için gösterir. Her AdMob biçimini ve her birini sayfanızın tam istediği yere koyma özgürlüğünü istiyorsanız, bunun yerine Adım 3'te 'Reklam Kontrolü → Geliştirici kontrollü' seçeneğini seçin.
Bu modda HİÇBİR ŞEY otomatik değildir. Kullandığınız her biçim için bir reklam birimi kimliği girin - banner, orta dikdörtgen (300×250), geçiş, ödüllü, ödüllü geçiş, uygulama açılışı - ve gerisini boş bırakın. Sayfanız her şeyi window.AppMintAds üzerinden yönetir:
- AppMintAds.banner.attach('#slot', {size:'banner'|'medium_rectangle'}) - adını verdiğiniz öğenin üzerine yerleştirilen bir banner; bir kartın içinde, liste öğeleri arasında, her yerde. Kaydırırken öğeyi takip eder; detach() kaldırır. Aynı anda en fazla iki tane.
- await AppMintAds.load('interstitial') → {ok:true} veya {ok:false, code:'no_fill'|'network'|'invalid_unit'|'consent'|'ad_free'|'disabled'}
- await AppMintAds.show('rewarded') → {shown:true, earned:true, reward:{type,amount}} veya {shown:false, reason}
- AppMintAds.isReady('interstitial') - düğmenizi buna göre etkinleştirin
- AppMintAds.appOpen.setEnabled(false) - kullanıcı bir işin ortasındayken uygulama açılış reklamını duraklatın
AppMintAds yalnızca yüklü uygulamanın içinde bulunur - her zaman özellik tespiti yapın (if (window.AppMintAds) …) ki sayfa tarayıcıda da çalışsın. Google'ın kuralları geçerlidir ve uygulama bunları uygular: ödüllü reklam yalnızca kullanıcının kendi dokunuşuyla oynar ('Reklam izle' düğmeniz onay anlamına gelir), geçiş reklamları arasında 60 saniye ara bırakılır ve asla temel bir eylemin üstüne reklam koymayın.
// 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; });
Uygulamada, bu adımın düğmesi bunları telefonunuza kaydeder. Burada doğrudan indirilebilir.
admob-developer-demo.html15Reklam durum olayları: her isteğe ne olduğunu bilin#
Geliştirici kontrollü her reklam, tüm yaşam döngüsünü TEK bir olayda bildirir, appmint:ad; böylece dolumları günlüğe kaydedebilir, hatalara tepki verebilir ve kendi arayüzünüzü yönetebilirsiniz:
{ 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, ayrıca rewarded (ödül kazanıldı) ve show_failed
- code (failed durumunda): no_fill | network | invalid_unit | internal - adCode AdMob'un kendi numarası, message ise metnidir
- slot: hangi banner alanı, banner/mrec için
Promise'ler her çağrıda aynı yanıtı verir; olay ise show() çağırmadığınız reklamlar (uygulama açılış reklamı, banner yenileme) dahil her şeyi verir. Otomatik modda AppMintAds yine vardır ancak 'automatic_mode' koduyla yanıt verir - bunun yerine WebToApk.showInterstitialAd()/showRewardedAd() çağrılarını ve oradaki appmint:reward / appmint:ad-closed / appmint:ad-unavailable olaylarını kullanın.
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, ... } }