Skip to content

Commit b1ad736

Browse files
committed
refactor(ads): enhance AdMobAdProvider logging and consistency
- Add 'AdMobAdProvider:' prefix to all log messages for better context - Improve log consistency across initialize(), loadNativeAd(), loadBannerAd(), and loadInterstitialAd() - Add additional debug logs for ad loading attempts and potential null outcomes - Remove redundant comments and simplify error handling where possible
1 parent 7b7fba7 commit b1ad736

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

lib/ads/admob_ad_provider.dart

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ class AdMobAdProvider implements AdProvider {
3030

3131
@override
3232
Future<void> initialize() async {
33-
_logger.info('Initializing Google Mobile Ads SDK...');
33+
_logger.info('AdMobAdProvider: Initializing Google Mobile Ads SDK...');
3434
try {
3535
await admob.MobileAds.instance.initialize();
36-
_logger.info('Google Mobile Ads SDK initialized successfully.');
36+
_logger.info('AdMobAdProvider: Google Mobile Ads SDK initialized successfully.');
3737
} catch (e) {
38-
_logger.severe('Failed to initialize Google Mobile Ads SDK: $e');
38+
_logger.severe('AdMobAdProvider: Failed to initialize Google Mobile Ads SDK: $e');
3939
// Depending on requirements, you might want to rethrow or handle this more gracefully.
4040
// For now, we log and continue, as ad loading might still work in some cases.
4141
}
@@ -48,12 +48,13 @@ class AdMobAdProvider implements AdProvider {
4848
required AdThemeStyle adThemeStyle,
4949
HeadlineImageStyle? headlineImageStyle,
5050
}) async {
51+
_logger.info('AdMobAdProvider: loadNativeAd called for adId: $adId');
5152
if (adId == null || adId.isEmpty) {
52-
_logger.warning('No native ad unit ID provided for AdMob.');
53+
_logger.warning('AdMobAdProvider: No native ad unit ID provided for AdMob.');
5354
return null;
5455
}
5556

56-
_logger.info('Attempting to load native ad from unit ID: $adId');
57+
_logger.info('AdMobAdProvider: Attempting to load native ad from unit ID: $adId');
5758

5859
// Determine the template type based on the user's feed style preference.
5960
final templateType = headlineImageStyle == HeadlineImageStyle.largeThumbnail
@@ -74,51 +75,53 @@ class AdMobAdProvider implements AdProvider {
7475
),
7576
listener: admob.NativeAdListener(
7677
onAdLoaded: (ad) {
77-
_logger.info('Native Ad loaded successfully.');
78+
_logger.info('AdMobAdProvider: Native Ad loaded successfully.');
7879
completer.complete(ad as admob.NativeAd);
7980
},
8081
onAdFailedToLoad: (ad, error) {
81-
_logger.severe('Native Ad failed to load: $error');
82+
_logger.severe('AdMobAdProvider: Native Ad failed to load: $error');
8283
completer.complete(null);
8384
},
8485
onAdClicked: (ad) {
85-
_logger.info('Native Ad clicked.');
86+
_logger.info('AdMobAdProvider: Native Ad clicked.');
8687
},
8788
onAdImpression: (ad) {
88-
_logger.info('Native Ad impression recorded.');
89+
_logger.info('AdMobAdProvider: Native Ad impression recorded.');
8990
},
9091
onAdClosed: (ad) {
91-
_logger.info('Native Ad closed.');
92+
_logger.info('AdMobAdProvider: Native Ad closed.');
9293
},
9394
onAdOpened: (ad) {
94-
_logger.info('Native Ad opened.');
95+
_logger.info('AdMobAdProvider: Native Ad opened.');
9596
},
9697
onAdWillDismissScreen: (ad) {
97-
_logger.info('Native Ad will dismiss screen.');
98+
_logger.info('AdMobAdProvider: Native Ad will dismiss screen.');
9899
},
99100
),
100101
);
101102

102103
try {
103104
await ad.load();
104105
} catch (e) {
105-
_logger.severe('Error during native ad load: $e');
106+
_logger.severe('AdMobAdProvider: Error during native ad load: $e');
106107
completer.complete(null);
107108
}
108109

109110
final googleNativeAd = await completer.future.timeout(
110111
const Duration(seconds: _adLoadTimeout),
111112
onTimeout: () {
112-
_logger.warning('Native ad loading timed out.');
113+
_logger.warning('AdMobAdProvider: Native ad loading timed out.');
113114
ad.dispose();
114115
return null;
115116
},
116117
);
117118

118119
if (googleNativeAd == null) {
120+
_logger.warning('AdMobAdProvider: Google Native Ad object is null after load attempt.');
119121
return null;
120122
}
121123

124+
_logger.info('AdMobAdProvider: Returning loaded NativeAd.');
122125
return NativeAd(
123126
id: _uuid.v4(),
124127
provider: AdPlatformType.admob,
@@ -134,12 +137,13 @@ class AdMobAdProvider implements AdProvider {
134137
required AdThemeStyle adThemeStyle,
135138
HeadlineImageStyle? headlineImageStyle,
136139
}) async {
140+
_logger.info('AdMobAdProvider: loadBannerAd called for adId: $adId');
137141
if (adId == null || adId.isEmpty) {
138-
_logger.warning('No banner ad unit ID provided for AdMob.');
142+
_logger.warning('AdMobAdProvider: No banner ad unit ID provided for AdMob.');
139143
return null;
140144
}
141145

142-
_logger.info('Attempting to load banner ad from unit ID: $adId');
146+
_logger.info('AdMobAdProvider: Attempting to load banner ad from unit ID: $adId');
143147

144148
// Determine the ad size based on the user's feed style preference.
145149
final adSize = headlineImageStyle == HeadlineImageStyle.largeThumbnail
@@ -154,47 +158,49 @@ class AdMobAdProvider implements AdProvider {
154158
request: const admob.AdRequest(),
155159
listener: admob.BannerAdListener(
156160
onAdLoaded: (ad) {
157-
_logger.info('Banner Ad loaded successfully.');
161+
_logger.info('AdMobAdProvider: Banner Ad loaded successfully.');
158162
completer.complete(ad as admob.BannerAd);
159163
},
160164
onAdFailedToLoad: (ad, error) {
161-
_logger.severe('Banner Ad failed to load: $error');
165+
_logger.severe('AdMobAdProvider: Banner Ad failed to load: $error');
162166
ad.dispose();
163167
completer.complete(null);
164168
},
165169
onAdOpened: (ad) {
166-
_logger.info('Banner Ad opened.');
170+
_logger.info('AdMobAdProvider: Banner Ad opened.');
167171
},
168172
onAdClosed: (ad) {
169-
_logger.info('Banner Ad closed.');
173+
_logger.info('AdMobAdProvider: Banner Ad closed.');
170174
},
171175
onAdImpression: (ad) {
172-
_logger.info('Banner Ad impression recorded.');
176+
_logger.info('AdMobAdProvider: Banner Ad impression recorded.');
173177
},
174178
),
175179
);
176180

177181
try {
178182
await ad.load();
179183
} catch (e) {
180-
_logger.severe('Error during banner ad load: $e');
184+
_logger.severe('AdMobAdProvider: Error during banner ad load: $e');
181185
completer.complete(null);
182186
}
183187

184188
final googleBannerAd = await completer.future.timeout(
185189
const Duration(seconds: _adLoadTimeout),
186190
onTimeout: () {
187-
_logger.warning('Banner ad loading timed out.');
191+
_logger.warning('AdMobAdProvider: Banner ad loading timed out.');
188192
ad.dispose();
189193
return null;
190194
},
191195
);
192196

193197
if (googleBannerAd == null) {
198+
_logger.warning('AdMobAdProvider: Google Banner Ad object is null after load attempt.');
194199
return null;
195200
}
196201

197202
// Wrap the loaded AdMob BannerAd in our generic BannerAd model.
203+
_logger.info('AdMobAdProvider: Returning loaded BannerAd.');
198204
return BannerAd(
199205
id: _uuid.v4(),
200206
provider: AdPlatformType.admob,
@@ -208,12 +214,13 @@ class AdMobAdProvider implements AdProvider {
208214
required String? adId,
209215
required AdThemeStyle adThemeStyle,
210216
}) async {
217+
_logger.info('AdMobAdProvider: loadInterstitialAd called for adId: $adId');
211218
if (adId == null || adId.isEmpty) {
212-
_logger.warning('No interstitial ad unit ID provided for AdMob.');
219+
_logger.warning('AdMobAdProvider: No interstitial ad unit ID provided for AdMob.');
213220
return null;
214221
}
215222

216-
_logger.info('Attempting to load interstitial ad from unit ID: $adId');
223+
_logger.info('AdMobAdProvider: Attempting to load interstitial ad from unit ID: $adId');
217224

218225
final completer = Completer<admob.InterstitialAd?>();
219226

@@ -222,11 +229,11 @@ class AdMobAdProvider implements AdProvider {
222229
request: const admob.AdRequest(),
223230
adLoadCallback: admob.InterstitialAdLoadCallback(
224231
onAdLoaded: (ad) {
225-
_logger.info('Interstitial Ad loaded successfully.');
232+
_logger.info('AdMobAdProvider: Interstitial Ad loaded successfully.');
226233
completer.complete(ad);
227234
},
228235
onAdFailedToLoad: (error) {
229-
_logger.severe('Interstitial Ad failed to load: $error');
236+
_logger.severe('AdMobAdProvider: Interstitial Ad failed to load: $error');
230237
completer.complete(null);
231238
},
232239
),
@@ -235,19 +242,21 @@ class AdMobAdProvider implements AdProvider {
235242
final googleInterstitialAd = await completer.future.timeout(
236243
const Duration(seconds: _adLoadTimeout),
237244
onTimeout: () {
238-
_logger.warning('Interstitial ad loading timed out.');
245+
_logger.warning('AdMobAdProvider: Interstitial ad loading timed out.');
239246
return null;
240247
},
241248
);
242249

243250
if (googleInterstitialAd == null) {
251+
_logger.warning('AdMobAdProvider: Google Interstitial Ad object is null after load attempt.');
244252
return null;
245253
}
246254

247255
// Interstitial ads are typically shown immediately or on demand,
248256
// not rendered as a widget in a feed. We wrap it as a InterstitialAd
249257
// for consistency in the AdService return type, but its `adObject`
250258
// will be an `InterstitialAd` which can be shown.
259+
_logger.info('AdMobAdProvider: Returning loaded InterstitialAd.');
251260
return InterstitialAd(
252261
id: _uuid.v4(),
253262
provider: AdPlatformType.admob,

0 commit comments

Comments
 (0)