diff --git a/packages/interactive_media_ads/CHANGELOG.md b/packages/interactive_media_ads/CHANGELOG.md index 23158645b32..23763eb13c8 100644 --- a/packages/interactive_media_ads/CHANGELOG.md +++ b/packages/interactive_media_ads/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.6+1 + +* Fixes passing ads response to Android native `AdsRequest`. + ## 0.2.6 * Adds support to configure ad requests. See `AdsRequest`. diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt index 8e2349807d6..639c791a6af 100644 --- a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt +++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt @@ -21,7 +21,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) : * * This must match the version in pubspec.yaml. */ - const val pluginVersion = "0.2.6" + const val pluginVersion = "0.2.6+1" } override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) { diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift index 87a74cf065d..33c823bb94a 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift @@ -13,7 +13,7 @@ class AdsRequestProxyAPIDelegate: PigeonApiDelegateIMAAdsRequest { /// The current version of the `interactive_media_ads` plugin. /// /// This must match the version in pubspec.yaml. - static let pluginVersion = "0.2.6" + static let pluginVersion = "0.2.6+1" func pigeonDefaultConstructor( pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, diff --git a/packages/interactive_media_ads/lib/src/android/android_ads_loader.dart b/packages/interactive_media_ads/lib/src/android/android_ads_loader.dart index 7969893cd69..9c2ecc9308e 100644 --- a/packages/interactive_media_ads/lib/src/android/android_ads_loader.dart +++ b/packages/interactive_media_ads/lib/src/android/android_ads_loader.dart @@ -92,7 +92,7 @@ base class AndroidAdsLoader extends PlatformAdsLoader { if (request case final PlatformAdsRequestWithAdTagUrl request) androidRequest.setAdTagUrl(request.adTagUrl), if (request case final PlatformAdsRequestWithAdsResponse request) - androidRequest.setAdTagUrl(request.adsResponse), + androidRequest.setAdsResponse(request.adsResponse), if (request.adWillAutoPlay case final bool adWillAutoPlay) androidRequest.setAdWillAutoPlay(adWillAutoPlay), if (request.adWillPlayMuted case final bool adWillPlayMuted) diff --git a/packages/interactive_media_ads/pubspec.yaml b/packages/interactive_media_ads/pubspec.yaml index 5215dce3ee4..aad8d848b07 100644 --- a/packages/interactive_media_ads/pubspec.yaml +++ b/packages/interactive_media_ads/pubspec.yaml @@ -2,7 +2,7 @@ name: interactive_media_ads description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22 -version: 0.2.6 # This must match the version in +version: 0.2.6+1 # This must match the version in # `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and # `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift` diff --git a/packages/interactive_media_ads/test/android/ads_loader_test.dart b/packages/interactive_media_ads/test/android/ads_loader_test.dart index a721a40ba0d..90a76e86aa1 100644 --- a/packages/interactive_media_ads/test/android/ads_loader_test.dart +++ b/packages/interactive_media_ads/test/android/ads_loader_test.dart @@ -147,6 +147,7 @@ void main() { ), ); + verifyNever(mockAdsRequest.setAdsResponse(any)); verifyInOrder(>[ mockAdsRequest.setAdTagUrl('url'), mockAdsRequest.setAdWillAutoPlay(true), @@ -164,6 +165,71 @@ void main() { ]); }); + testWidgets('requestAds with adsResponse', (WidgetTester tester) async { + final AndroidAdDisplayContainer container = + await _pumpAdDisplayContainer(tester); + + final MockAdsLoader mockAdsLoader = MockAdsLoader(); + final MockAdsRequest mockAdsRequest = MockAdsRequest(); + _mockImaSdkFactoryInstance( + adsRequest: mockAdsRequest, + adsLoader: mockAdsLoader, + ); + + final InteractiveMediaAdsProxy proxy = InteractiveMediaAdsProxy( + newContentProgressProvider: () => + ima.ContentProgressProvider.pigeon_detached(), + ); + + final AndroidAdsLoader adsLoader = AndroidAdsLoader( + AndroidAdsLoaderCreationParams( + container: container, + settings: AndroidImaSettings( + const PlatformImaSettingsCreationParams(), + ), + onAdsLoaded: (PlatformOnAdsLoadedData data) {}, + onAdsLoadError: (AdsLoadErrorData data) {}, + proxy: proxy, + ), + ); + + final AndroidContentProgressProvider progressProvider = + AndroidContentProgressProvider( + AndroidContentProgressProviderCreationParams(proxy: proxy), + ); + await adsLoader.requestAds( + PlatformAdsRequest.withAdsResponse( + adsResponse: 'url', + adWillAutoPlay: true, + adWillPlayMuted: false, + continuousPlayback: true, + contentDuration: const Duration(seconds: 2), + contentKeywords: ['keyword1', 'keyword2'], + contentTitle: 'contentTitle', + liveStreamPrefetchMaxWaitTime: const Duration(seconds: 3), + vastLoadTimeout: const Duration(milliseconds: 5000), + contentProgressProvider: progressProvider, + ), + ); + + verifyNever(mockAdsRequest.setAdTagUrl(any)); + verifyInOrder(>[ + mockAdsRequest.setAdsResponse('url'), + mockAdsRequest.setAdWillAutoPlay(true), + mockAdsRequest.setAdWillPlayMuted(false), + mockAdsRequest.setContinuousPlayback(true), + mockAdsRequest.setContentDuration(2.0), + mockAdsRequest.setContentKeywords(['keyword1', 'keyword2']), + mockAdsRequest.setContentTitle('contentTitle'), + mockAdsRequest.setLiveStreamPrefetchSeconds(3.0), + mockAdsRequest.setVastLoadTimeout(5000.0), + mockAdsRequest.setContentProgressProvider( + progressProvider.progressProvider, + ), + mockAdsLoader.requestAds(mockAdsRequest), + ]); + }); + testWidgets('onAdsLoaded', (WidgetTester tester) async { final AndroidAdDisplayContainer container = await _pumpAdDisplayContainer(tester);