74 lines
1.7 KiB
Dart
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;
|
|
}
|