Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/interactive_media_ads/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion packages/interactive_media_ads/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ void main() {
),
);

verifyNever(mockAdsRequest.setAdsResponse(any));
verifyInOrder(<Future<void>>[
mockAdsRequest.setAdTagUrl('url'),
mockAdsRequest.setAdWillAutoPlay(true),
Expand All @@ -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: <String>['keyword1', 'keyword2'],
contentTitle: 'contentTitle',
liveStreamPrefetchMaxWaitTime: const Duration(seconds: 3),
vastLoadTimeout: const Duration(milliseconds: 5000),
contentProgressProvider: progressProvider,
),
);

verifyNever(mockAdsRequest.setAdTagUrl(any));
verifyInOrder(<Future<void>>[
mockAdsRequest.setAdsResponse('url'),
mockAdsRequest.setAdWillAutoPlay(true),
mockAdsRequest.setAdWillPlayMuted(false),
mockAdsRequest.setContinuousPlayback(true),
mockAdsRequest.setContentDuration(2.0),
mockAdsRequest.setContentKeywords(<String>['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);
Expand Down