Files
Quote-Generator-Client/lib/services/admob_service.dart
ImBenji f1ce1c77a4
Some checks failed
Build Android App / build (push) Has been cancelled
add ad services and Docker configuration for web app
2026-01-02 15:21:27 +00:00

74 lines
1.7 KiB
Dart

import "package:flutter/foundation.dart";
import "package:flutter/widgets.dart";
import "package:google_mobile_ads/google_mobile_ads.dart";
import "ad_service.dart";
class AdMobService implements AdService {
BannerAd? _bannerAd;
bool _isLoaded = false;
// Ad unit IDs
static const String _androidBannerAdUnitId = "ca-app-pub-5177609929140951/8415596856";
static const String _iosBannerAdUnitId = "ca-app-pub-5177609929140951/7102515188";
String get _bannerAdUnitId {
if (defaultTargetPlatform == TargetPlatform.android) {
return _androidBannerAdUnitId;
} else if (defaultTargetPlatform == TargetPlatform.iOS) {
return _iosBannerAdUnitId;
} else {
throw UnsupportedError("Platform not supported");
}
}
@override
Future<void> initialize() async {
await MobileAds.instance.initialize();
print("AdMob initialized");
}
@override
Future<void> loadBannerAd() async {
_bannerAd = BannerAd(
adUnitId: _bannerAdUnitId,
size: AdSize.banner,
request: const AdRequest(),
listener: BannerAdListener(
onAdLoaded: (ad) {
print("Banner ad loaded");
_isLoaded = true;
},
onAdFailedToLoad: (ad, error) {
print("Banner ad failed to load: $error");
ad.dispose();
_isLoaded = false;
},
),
);
await _bannerAd!.load();
}
@override
Widget getBannerWidget() {
if (_bannerAd == null || !_isLoaded) {
return SizedBox.shrink();
}
return SizedBox(
height: 50,
child: AdWidget(ad: _bannerAd!),
);
}
@override
void dispose() {
_bannerAd?.dispose();
_bannerAd = null;
_isLoaded = false;
}
@override
bool get isLoaded => _isLoaded;
}