@@ -34,11 +34,11 @@ class AdService {
3434 /// This should be called once at application startup to ensure all
3535 /// integrated ad SDKs are properly initialized.
3636 Future <void > initialize () async {
37- _logger.info ('Initializing AdService...' );
37+ _logger.info ('AdService: Initializing AdService...' );
3838 for (final provider in _adProviders.values) {
3939 await provider.initialize ();
4040 }
41- _logger.info ('AdService initialized.' );
41+ _logger.info ('AdService: AdService initialized.' );
4242 }
4343
4444 /// Retrieves a loaded inline ad (native or banner) for display in a feed.
@@ -59,6 +59,7 @@ class AdService {
5959 required AdThemeStyle adThemeStyle,
6060 HeadlineImageStyle ? headlineImageStyle,
6161 }) async {
62+ _logger.info ('AdService: getFeedAd called for adType: $adType ' );
6263 return _loadInlineAd (
6364 adConfig: adConfig,
6465 adType: adType,
@@ -83,30 +84,31 @@ class AdService {
8384 required AdConfig adConfig,
8485 required AdThemeStyle adThemeStyle,
8586 }) async {
87+ _logger.info ('AdService: getInterstitialAd called.' );
8688 if (! adConfig.enabled) {
87- _logger.info ('Ads are globally disabled in RemoteConfig.' );
89+ _logger.info ('AdService: Ads are globally disabled in RemoteConfig.' );
8890 return null ;
8991 }
9092
9193 // Check if interstitial ads are enabled in the remote config.
9294 if (! adConfig.interstitialAdConfiguration.enabled) {
93- _logger.info ('Interstitial ads are disabled in RemoteConfig.' );
95+ _logger.info ('AdService: Interstitial ads are disabled in RemoteConfig.' );
9496 return null ;
9597 }
9698
9799 final primaryAdPlatform = adConfig.primaryAdPlatform;
98100 final adProvider = _adProviders[primaryAdPlatform];
99101
100102 if (adProvider == null ) {
101- _logger.warning ('No AdProvider found for platform: $primaryAdPlatform ' );
103+ _logger.warning ('AdService: No AdProvider found for platform: $primaryAdPlatform ' );
102104 return null ;
103105 }
104106
105107 final platformAdIdentifiers =
106108 adConfig.platformAdIdentifiers[primaryAdPlatform];
107109 if (platformAdIdentifiers == null ) {
108110 _logger.warning (
109- 'No AdPlatformIdentifiers found for platform: $primaryAdPlatform ' ,
111+ 'AdService: No AdPlatformIdentifiers found for platform: $primaryAdPlatform ' ,
110112 );
111113 return null ;
112114 }
@@ -116,13 +118,13 @@ class AdService {
116118
117119 if (adId == null || adId.isEmpty) {
118120 _logger.warning (
119- 'No interstitial ad ID configured for platform $primaryAdPlatform ' ,
121+ 'AdService: No interstitial ad ID configured for platform $primaryAdPlatform ' ,
120122 );
121123 return null ;
122124 }
123125
124126 _logger.info (
125- 'Requesting Interstitial ad from $primaryAdPlatform AdProvider with ID: $adId ' ,
127+ 'AdService: Requesting Interstitial ad from $primaryAdPlatform AdProvider with ID: $adId ' ,
126128 );
127129 try {
128130 final loadedAd = await adProvider.loadInterstitialAd (
@@ -132,14 +134,14 @@ class AdService {
132134 );
133135
134136 if (loadedAd != null ) {
135- _logger.info ('Interstitial ad successfully loaded.' );
137+ _logger.info ('AdService: Interstitial ad successfully loaded.' );
136138 return loadedAd;
137139 } else {
138- _logger.info ('No Interstitial ad loaded by AdProvider.' );
140+ _logger.info ('AdService: No Interstitial ad loaded by AdProvider.' );
139141 return null ;
140142 }
141- } catch (e) {
142- _logger.severe ('Error getting Interstitial ad from AdProvider: $e ' );
143+ } catch (e, s ) {
144+ _logger.severe ('AdService: Error getting Interstitial ad from AdProvider: $e ' , e, s );
143145 return null ;
144146 }
145147 }
@@ -154,21 +156,16 @@ class AdService {
154156 ///
155157 /// - [adConfig] : The remote configuration for ad display rules.
156158 /// - [adThemeStyle] : UI-agnostic theme properties for ad styling.
157- /// - [headlineImageStyle] : The user's preference for feed layout,
158- /// which can be used to request an appropriately sized ad.
159159 Future <InlineAd ?> getInArticleAd ({
160160 required AdConfig adConfig,
161161 required AdThemeStyle adThemeStyle,
162- // headlineImageStyle is not directly used for in-article ad sizing,
163- // but kept for consistency with AdService.getFeedAd.
164- HeadlineImageStyle ? headlineImageStyle,
165162 }) async {
163+ _logger.info ('AdService: getInArticleAd called.' );
166164 return _loadInlineAd (
167165 adConfig: adConfig,
168166 adType: AdType .banner, // In-article ads are now always banners
169167 adThemeStyle: adThemeStyle,
170168 feedAd: false ,
171- headlineImageStyle: headlineImageStyle,
172169 bannerAdShape: adConfig.articleAdConfiguration.bannerAdShape,
173170 );
174171 }
@@ -196,20 +193,27 @@ class AdService {
196193 HeadlineImageStyle ? headlineImageStyle,
197194 BannerAdShape ? bannerAdShape,
198195 }) async {
196+ _logger.info (
197+ 'AdService: _loadInlineAd called for adType: $adType , feedAd: $feedAd ' ,
198+ );
199199 // Check if ads are globally enabled and specifically for the context (feed or article).
200- if (! adConfig.enabled ||
201- (feedAd && ! adConfig.feedAdConfiguration.enabled) ||
202- (! feedAd && ! adConfig.articleAdConfiguration.enabled)) {
203- _logger.info (
204- 'Inline ads are disabled in RemoteConfig, either globally or for this context.' ,
205- );
200+ if (! adConfig.enabled) {
201+ _logger.info ('AdService: Ads are globally disabled in RemoteConfig.' );
202+ return null ;
203+ }
204+ if (feedAd && ! adConfig.feedAdConfiguration.enabled) {
205+ _logger.info ('AdService: Feed ads are disabled in RemoteConfig.' );
206+ return null ;
207+ }
208+ if (! feedAd && ! adConfig.articleAdConfiguration.enabled) {
209+ _logger.info ('AdService: In-article ads are disabled in RemoteConfig.' );
206210 return null ;
207211 }
208212
209213 // Ensure the requested adType is valid for inline ads.
210214 if (adType != AdType .native && adType != AdType .banner) {
211215 _logger.warning (
212- '_loadInlineAd called with unsupported AdType: $adType . '
216+ 'AdService: _loadInlineAd called with unsupported AdType: $adType . '
213217 'Expected AdType.native or AdType.banner.' ,
214218 );
215219 return null ;
@@ -219,15 +223,15 @@ class AdService {
219223 final adProvider = _adProviders[primaryAdPlatform];
220224
221225 if (adProvider == null ) {
222- _logger.warning ('No AdProvider found for platform: $primaryAdPlatform ' );
226+ _logger.warning ('AdService: No AdProvider found for platform: $primaryAdPlatform ' );
223227 return null ;
224228 }
225229
226230 final platformAdIdentifiers =
227231 adConfig.platformAdIdentifiers[primaryAdPlatform];
228232 if (platformAdIdentifiers == null ) {
229233 _logger.warning (
230- 'No AdPlatformIdentifiers found for platform: $primaryAdPlatform ' ,
234+ 'AdService: No AdPlatformIdentifiers found for platform: $primaryAdPlatform ' ,
231235 );
232236 return null ;
233237 }
@@ -242,26 +246,21 @@ class AdService {
242246
243247 if (adId == null || adId.isEmpty) {
244248 _logger.warning (
245- 'No ad ID configured for platform $primaryAdPlatform and ad type $adType '
249+ 'AdService: No ad ID configured for platform $primaryAdPlatform and ad type $adType '
246250 'for ${feedAd ? 'feed' : 'in-article' } placement.' ,
247251 );
248252 return null ;
249253 }
250254
251255 _logger.info (
252- 'Requesting $adType ad from $primaryAdPlatform AdProvider with ID: $adId '
256+ 'AdService: Requesting $adType ad from $primaryAdPlatform AdProvider with ID: $adId '
253257 'for ${feedAd ? 'feed' : 'in-article' } placement.' ,
254258 );
255259 try {
256260 InlineAd ? loadedAd;
257- // Determine the effective headlineImageStyle for the ad provider.
258261 // For in-article banner ads, bannerAdShape dictates the visual style.
259- final effectiveHeadlineImageStyle =
260- ! feedAd && adType == AdType .banner && bannerAdShape != null
261- ? (bannerAdShape == BannerAdShape .square
262- ? HeadlineImageStyle .largeThumbnail
263- : HeadlineImageStyle .smallThumbnail)
264- : headlineImageStyle; // Otherwise, use the provided headlineImageStyle
262+ // For feed ads, headlineImageStyle is still relevant.
263+ final effectiveHeadlineImageStyle = feedAd ? headlineImageStyle : null ;
265264
266265 switch (adType) {
267266 case AdType .native :
@@ -281,20 +280,20 @@ class AdService {
281280 case AdType .interstitial:
282281 case AdType .video:
283282 _logger.warning (
284- 'Attempted to load $adType ad using _loadInlineAd. This is not supported.' ,
283+ 'AdService: Attempted to load $adType ad using _loadInlineAd. This is not supported.' ,
285284 );
286285 return null ;
287286 }
288287
289288 if (loadedAd != null ) {
290- _logger.info ('$adType ad successfully loaded.' );
289+ _logger.info ('AdService: $adType ad successfully loaded.' );
291290 return loadedAd;
292291 } else {
293- _logger.info ('No $adType ad loaded by AdProvider.' );
292+ _logger.info ('AdService: No $adType ad loaded by AdProvider.' );
294293 return null ;
295294 }
296- } catch (e) {
297- _logger.severe ('Error getting $adType ad from AdProvider: $e ' );
295+ } catch (e, s ) {
296+ _logger.severe ('AdService: Error getting $adType ad from AdProvider: $e ' , e, s );
298297 return null ;
299298 }
300299 }
0 commit comments