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.3.0+10

* Bumps `com.google.ads.interactivemedia.v3:interactivemedia` from 3.38.0 to 3.39.0.

## 0.3.0+9

* Bumps kotlin_version to 2.3.0.
Expand Down
2 changes: 1 addition & 1 deletion packages/interactive_media_ads/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ android {
dependencies {
implementation("androidx.annotation:annotation:1.9.1")
implementation("androidx.core:core-ktx:1.13.0")
implementation("com.google.ads.interactivemedia.v3:interactivemedia:3.38.0")
implementation("com.google.ads.interactivemedia.v3:interactivemedia:3.39.0")
testImplementation("junit:junit:4.13.2")
testImplementation("org.jetbrains.kotlin:kotlin-test")
testImplementation("org.mockito.kotlin:mockito-kotlin:6.1.0")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import com.google.ads.interactivemedia.v3.api.AdsManagerLoadedEvent
*/
class AdsManagerLoadedEventProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
PigeonApiAdsManagerLoadedEvent(pigeonRegistrar) {
override fun manager(pigeon_instance: AdsManagerLoadedEvent): AdsManager {
override fun manager(pigeon_instance: AdsManagerLoadedEvent): AdsManager? {
return pigeon_instance.adsManager
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class AdsRenderingSettingsProxyApi(override val pigeonRegistrar: ProxyApiRegistr
return pigeon_instance.focusSkipButtonWhenAvailable
}

override fun getMimeTypes(pigeon_instance: AdsRenderingSettings): List<String> {
override fun getMimeTypes(pigeon_instance: AdsRenderingSettings): List<String>? {
return pigeon_instance.mimeTypes
}

Expand Down Expand Up @@ -65,7 +65,7 @@ class AdsRenderingSettingsProxyApi(override val pigeonRegistrar: ProxyApiRegistr
}

override fun setMimeTypes(pigeon_instance: AdsRenderingSettings, mimeTypes: List<String>) {
pigeon_instance.mimeTypes = mimeTypes
pigeon_instance.setMimeTypes(mimeTypes)
}

override fun setPlayAdsAfterTime(pigeon_instance: AdsRenderingSettings, time: Double) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,23 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
*
* This must match the version in pubspec.yaml.
*/
const val pluginVersion = "0.3.0+9"
const val pluginVersion = "0.3.0+10"
}

override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {
// Add a request agent only if the adTagUrl can append a custom parameter.
if (!adTagUrl.contains("#") && adTagUrl.contains("?")) {
pigeon_instance.adTagUrl = "$adTagUrl&request_agent=Flutter-IMA-$pluginVersion"
pigeon_instance.setAdTagUrl("$adTagUrl&request_agent=Flutter-IMA-$pluginVersion")
} else {
pigeon_instance.adTagUrl = adTagUrl
pigeon_instance.setAdTagUrl(adTagUrl)
}
}

override fun setContentProgressProvider(
pigeon_instance: AdsRequest,
provider: ContentProgressProvider
) {
pigeon_instance.contentProgressProvider = provider
pigeon_instance.setContentProgressProvider(provider)
}

override fun setAdWillAutoPlay(pigeon_instance: AdsRequest, willAutoPlay: Boolean) {
Expand All @@ -49,7 +49,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
}

override fun setAdsResponse(pigeon_instance: AdsRequest, cannedAdResponse: String) {
pigeon_instance.adsResponse = cannedAdResponse
pigeon_instance.setAdsResponse(cannedAdResponse)
}

override fun setContentDuration(pigeon_instance: AdsRequest, duration: Double) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class CompanionAdProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
return pigeon_instance.height.toLong()
}

override fun resourceValue(pigeon_instance: CompanionAd): String {
override fun resourceValue(pigeon_instance: CompanionAd): String? {
return pigeon_instance.resourceValue
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,30 @@ class ImaSdkSettingsProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
}

override fun setFeatureFlags(pigeon_instance: ImaSdkSettings, featureFlags: Map<String, String>) {
pigeon_instance.featureFlags = featureFlags
pigeon_instance.setFeatureFlags(featureFlags)
}

override fun setLanguage(pigeon_instance: ImaSdkSettings, language: String) {
pigeon_instance.language = language
pigeon_instance.setLanguage(language)
}

override fun setMaxRedirects(pigeon_instance: ImaSdkSettings, maxRedirects: Long) {
pigeon_instance.maxRedirects = maxRedirects.toInt()
}

override fun setPlayerType(pigeon_instance: ImaSdkSettings, playerType: String) {
pigeon_instance.playerType = playerType
pigeon_instance.setPlayerType(playerType)
}

override fun setPlayerVersion(pigeon_instance: ImaSdkSettings, playerVersion: String) {
pigeon_instance.playerVersion = playerVersion
pigeon_instance.setPlayerVersion(playerVersion)
}

override fun setPpid(pigeon_instance: ImaSdkSettings, ppid: String) {
pigeon_instance.ppid = ppid
pigeon_instance.setPpid(ppid)
}

override fun setSessionId(pigeon_instance: ImaSdkSettings, sessionId: String) {
pigeon_instance.sessionId = sessionId
pigeon_instance.setSessionId(sessionId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1532,7 +1532,7 @@ abstract class PigeonApiAdsManagerLoadedEvent(
*/
abstract fun manager(
pigeon_instance: com.google.ads.interactivemedia.v3.api.AdsManagerLoadedEvent
): com.google.ads.interactivemedia.v3.api.AdsManager
): com.google.ads.interactivemedia.v3.api.AdsManager?

@Suppress("LocalVariableName", "FunctionName")
/** Creates a Dart instance of AdsManagerLoadedEvent and attaches it to [pigeon_instanceArg]. */
Expand Down Expand Up @@ -5569,7 +5569,7 @@ abstract class PigeonApiAdsRenderingSettings(
/** The SDK will prioritize the media with MIME type on the list. */
abstract fun getMimeTypes(
pigeon_instance: com.google.ads.interactivemedia.v3.api.AdsRenderingSettings
): List<String>
): List<String>?

/**
* Maximum recommended bitrate.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class AdsRenderingSettingsProxyApiTest {
val mimeTypes = listOf("myString")
api.setMimeTypes(instance, mimeTypes)

verify(instance).mimeTypes = mimeTypes
verify(instance).setMimeTypes(mimeTypes)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ class AdsRequestProxyApiTest {
val instance = mock<AdsRequest>()
api.setAdTagUrl(instance, "adTag?")

verify(instance).adTagUrl =
"adTag?&request_agent=Flutter-IMA-${AdsRequestProxyApi.pluginVersion}"
verify(instance)
.setAdTagUrl("adTag?&request_agent=Flutter-IMA-${AdsRequestProxyApi.pluginVersion}")
}

@Test
Expand All @@ -29,10 +29,10 @@ class AdsRequestProxyApiTest {
val instance = mock<AdsRequest>()

api.setAdTagUrl(instance, "adTag#")
verify(instance).adTagUrl = "adTag#"
verify(instance).setAdTagUrl("adTag#")

api.setAdTagUrl(instance, "adTag?#")
verify(instance).adTagUrl = "adTag?#"
verify(instance).setAdTagUrl("adTag?#")
}

@Test
Expand All @@ -43,7 +43,7 @@ class AdsRequestProxyApiTest {
val mockProvider = mock<ContentProgressProvider>()
api.setContentProgressProvider(instance, mockProvider)

verify(instance).contentProgressProvider = mockProvider
verify(instance).setContentProgressProvider(mockProvider)
}

@Test
Expand Down Expand Up @@ -76,7 +76,7 @@ class AdsRequestProxyApiTest {
val cannedAdResponse = "response"
api.setAdsResponse(instance, cannedAdResponse)

verify(instance).adsResponse = cannedAdResponse
verify(instance).setAdsResponse(cannedAdResponse)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class ImaSdkSettingsProxyApiTest {
val featureFlags = mapOf("myString" to "myString2")
api.setFeatureFlags(instance, featureFlags)

verify(instance).featureFlags = featureFlags
verify(instance).setFeatureFlags(featureFlags)
}

@Test
Expand All @@ -51,7 +51,7 @@ class ImaSdkSettingsProxyApiTest {
val language = "myString"
api.setLanguage(instance, language)

verify(instance).language = language
verify(instance).setLanguage(language)
}

@Test
Expand All @@ -73,7 +73,7 @@ class ImaSdkSettingsProxyApiTest {
val playerType = "myString"
api.setPlayerType(instance, playerType)

verify(instance).playerType = playerType
verify(instance).setPlayerType(playerType)
}

@Test
Expand All @@ -84,7 +84,7 @@ class ImaSdkSettingsProxyApiTest {
val playerVersion = "myString"
api.setPlayerVersion(instance, playerVersion)

verify(instance).playerVersion = playerVersion
verify(instance).setPlayerVersion(playerVersion)
}

@Test
Expand All @@ -95,7 +95,7 @@ class ImaSdkSettingsProxyApiTest {
val ppid = "myString"
api.setPpid(instance, ppid)

verify(instance).ppid = ppid
verify(instance).setPpid(ppid)
}

@Test
Expand All @@ -106,6 +106,6 @@ class ImaSdkSettingsProxyApiTest {
val sessionId = "myString"
api.setSessionId(instance, sessionId)

verify(instance).sessionId = sessionId
verify(instance).setSessionId(sessionId)
}
}
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.3.0+9"
static let pluginVersion = "0.3.0+10"

func pigeonDefaultConstructor(
pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

import 'dart:async';

import 'package:flutter/foundation.dart' show debugPrint;

import '../platform_interface/platform_interface.dart';
import 'android_ad_display_container.dart';
import 'android_ads_manager.dart';
Expand Down Expand Up @@ -144,11 +146,21 @@ base class AndroidAdsLoader extends PlatformAdsLoader {
..addAdsLoadedListener(
ima.AdsLoadedListener(
onAdsManagerLoaded: (_, ima.AdsManagerLoadedEvent event) {
weakThis.target?.params.onAdsLoaded(
PlatformOnAdsLoadedData(
manager: AndroidAdsManager(event.manager),
),
);
if (event.manager case final ima.AdsManager manager) {
weakThis.target?.params.onAdsLoaded(
PlatformOnAdsLoadedData(
// `manager` is only null when using Dynamic Ad Insertion (DAI),
// which this plugin does not currently support.
// TODO(bparrishMines): Platform interface and app-facing
// interface should be updated to set this value as nullable.
manager: AndroidAdsManager(manager),
),
);
} else {
debugPrint(
'Failed to call `AndroidAdsLoader.onAdsLoaded` because `AdsLoadedListener.onAdsManagerLoaded` was called with a null AdsManager',
);
}
},
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1300,18 +1300,18 @@ class AdsManagerLoadedEvent extends PigeonInternalProxyApiBaseClass {
AdsManagerLoadedEvent.pigeon_detached({
super.pigeon_binaryMessenger,
super.pigeon_instanceManager,
required this.manager,
this.manager,
});

/// The ads manager that will control playback of the loaded ads, or null when
/// using dynamic ad insertion.
final AdsManager manager;
final AdsManager? manager;

static void pigeon_setUpMessageHandlers({
bool pigeon_clearHandlers = false,
BinaryMessenger? pigeon_binaryMessenger,
PigeonInstanceManager? pigeon_instanceManager,
AdsManagerLoadedEvent Function(AdsManager manager)? pigeon_newInstance,
AdsManagerLoadedEvent Function(AdsManager? manager)? pigeon_newInstance,
}) {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
_PigeonInternalProxyApiBaseCodec(
Expand Down Expand Up @@ -1339,18 +1339,14 @@ class AdsManagerLoadedEvent extends PigeonInternalProxyApiBaseClass {
'Argument for dev.flutter.pigeon.interactive_media_ads.AdsManagerLoadedEvent.pigeon_newInstance was null, expected non-null int.',
);
final AdsManager? arg_manager = (args[1] as AdsManager?);
assert(
arg_manager != null,
'Argument for dev.flutter.pigeon.interactive_media_ads.AdsManagerLoadedEvent.pigeon_newInstance was null, expected non-null AdsManager.',
);
try {
(pigeon_instanceManager ?? PigeonInstanceManager.instance)
.addHostCreatedInstance(
pigeon_newInstance?.call(arg_manager!) ??
pigeon_newInstance?.call(arg_manager) ??
AdsManagerLoadedEvent.pigeon_detached(
pigeon_binaryMessenger: pigeon_binaryMessenger,
pigeon_instanceManager: pigeon_instanceManager,
manager: arg_manager!,
manager: arg_manager,
),
arg_pigeon_instanceIdentifier!,
);
Expand Down Expand Up @@ -6820,7 +6816,7 @@ class AdsRenderingSettings extends PigeonInternalProxyApiBaseClass {
}

/// The SDK will prioritize the media with MIME type on the list.
Future<List<String>> getMimeTypes() async {
Future<List<String>?> getMimeTypes() async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
_pigeonVar_codecAdsRenderingSettings;
final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
Expand All @@ -6843,13 +6839,8 @@ class AdsRenderingSettings extends PigeonInternalProxyApiBaseClass {
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else if (pigeonVar_replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<String>();
return (pigeonVar_replyList[0] as List<Object?>?)?.cast<String>();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ abstract class AdsLoader {
abstract class AdsManagerLoadedEvent {
/// The ads manager that will control playback of the loaded ads, or null when
/// using dynamic ad insertion.
late final AdsManager manager;
late final AdsManager? manager;
}

/// An event raised when there is an error loading or playing ads.
Expand Down Expand Up @@ -961,7 +961,7 @@ abstract class AdsRenderingSettings {
bool getFocusSkipButtonWhenAvailable();

/// The SDK will prioritize the media with MIME type on the list.
List<String> getMimeTypes();
List<String>? getMimeTypes();

/// Maximum recommended bitrate.
///
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.3.0+9 # This must match the version in
version: 0.3.0+10 # 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
Loading
Loading