Skip to content

Commit 3b7ee86

Browse files
[interactive_media_ads] Adds internal wrapper for Android native Ad (#7880)
1 parent b2cc313 commit 3b7ee86

File tree

10 files changed

+1146
-5
lines changed

10 files changed

+1146
-5
lines changed

packages/interactive_media_ads/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.2.2+13
2+
3+
* Adds internal wrapper for Android native `Ad`.
4+
15
## 0.2.2+12
26

37
* Adds internal wrapper for iOS native `IMACompanionAd`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
package dev.flutter.packages.interactive_media_ads
6+
7+
import com.google.ads.interactivemedia.v3.api.Ad
8+
import com.google.ads.interactivemedia.v3.api.AdPodInfo
9+
import com.google.ads.interactivemedia.v3.api.CompanionAd
10+
import com.google.ads.interactivemedia.v3.api.UniversalAdId
11+
12+
/**
13+
* ProxyApi implementation for [Ad].
14+
*
15+
* <p>This class may handle instantiating native object instances that are attached to a Dart
16+
* instance or handle method calls on the associated native class or an instance of that class.
17+
*/
18+
class AdProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) : PigeonApiAd(pigeonRegistrar) {
19+
override fun adId(pigeon_instance: Ad): String {
20+
return pigeon_instance.adId
21+
}
22+
23+
override fun adPodInfo(pigeon_instance: Ad): AdPodInfo {
24+
return pigeon_instance.adPodInfo
25+
}
26+
27+
override fun adSystem(pigeon_instance: Ad): String {
28+
return pigeon_instance.adSystem
29+
}
30+
31+
override fun adWrapperCreativeIds(pigeon_instance: Ad): List<String> {
32+
return pigeon_instance.adWrapperCreativeIds.asList()
33+
}
34+
35+
override fun adWrapperIds(pigeon_instance: Ad): List<String> {
36+
return pigeon_instance.adWrapperIds.asList()
37+
}
38+
39+
override fun adWrapperSystems(pigeon_instance: Ad): List<String> {
40+
return pigeon_instance.adWrapperSystems.asList()
41+
}
42+
43+
override fun advertiserName(pigeon_instance: Ad): String {
44+
return pigeon_instance.advertiserName
45+
}
46+
47+
override fun companionAds(pigeon_instance: Ad): List<CompanionAd> {
48+
return pigeon_instance.companionAds
49+
}
50+
51+
override fun contentType(pigeon_instance: Ad): String? {
52+
return pigeon_instance.contentType
53+
}
54+
55+
override fun creativeAdId(pigeon_instance: Ad): String {
56+
return pigeon_instance.creativeAdId
57+
}
58+
59+
override fun creativeId(pigeon_instance: Ad): String {
60+
return pigeon_instance.creativeId
61+
}
62+
63+
override fun dealId(pigeon_instance: Ad): String {
64+
return pigeon_instance.dealId
65+
}
66+
67+
override fun description(pigeon_instance: Ad): String? {
68+
return pigeon_instance.description
69+
}
70+
71+
override fun duration(pigeon_instance: Ad): Double {
72+
return pigeon_instance.duration
73+
}
74+
75+
override fun height(pigeon_instance: Ad): Long {
76+
return pigeon_instance.height.toLong()
77+
}
78+
79+
override fun skipTimeOffset(pigeon_instance: Ad): Double {
80+
return pigeon_instance.skipTimeOffset
81+
}
82+
83+
override fun surveyUrl(pigeon_instance: Ad): String? {
84+
return pigeon_instance.surveyUrl
85+
}
86+
87+
override fun title(pigeon_instance: Ad): String? {
88+
return pigeon_instance.title
89+
}
90+
91+
override fun traffickingParameters(pigeon_instance: Ad): String {
92+
return pigeon_instance.traffickingParameters
93+
}
94+
95+
override fun uiElements(pigeon_instance: Ad): List<UiElement> {
96+
return pigeon_instance.uiElements.map {
97+
when (it) {
98+
com.google.ads.interactivemedia.v3.api.UiElement.AD_ATTRIBUTION -> UiElement.AD_ATTRIBUTION
99+
com.google.ads.interactivemedia.v3.api.UiElement.COUNTDOWN -> UiElement.COUNTDOWN
100+
else -> UiElement.UNKNOWN
101+
}
102+
}
103+
}
104+
105+
override fun universalAdIds(pigeon_instance: Ad): List<UniversalAdId> {
106+
return pigeon_instance.universalAdIds.toList()
107+
}
108+
109+
override fun vastMediaBitrate(pigeon_instance: Ad): Long {
110+
return pigeon_instance.vastMediaBitrate.toLong()
111+
}
112+
113+
override fun vastMediaHeight(pigeon_instance: Ad): Long {
114+
return pigeon_instance.vastMediaHeight.toLong()
115+
}
116+
117+
override fun vastMediaWidth(pigeon_instance: Ad): Long {
118+
return pigeon_instance.vastMediaWidth.toLong()
119+
}
120+
121+
override fun width(pigeon_instance: Ad): Long {
122+
return pigeon_instance.width.toLong()
123+
}
124+
125+
override fun isLinear(pigeon_instance: Ad): Boolean {
126+
return pigeon_instance.isLinear
127+
}
128+
129+
override fun isSkippable(pigeon_instance: Ad): Boolean {
130+
return pigeon_instance.isSkippable
131+
}
132+
}

packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
2121
*
2222
* This must match the version in pubspec.yaml.
2323
*/
24-
const val pluginVersion = "0.2.2+12"
24+
const val pluginVersion = "0.2.2+13"
2525
}
2626

2727
override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {

packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/InteractiveMediaAdsLibrary.g.kt

Lines changed: 215 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2013 The Flutter Authors. All rights reserved.
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
4-
// Autogenerated from Pigeon (v22.4.2), do not edit directly.
4+
// Autogenerated from Pigeon (v22.5.0), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass", "SyntheticAccessor")
77

@@ -561,6 +561,12 @@ abstract class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar(
561561
*/
562562
abstract fun getPigeonApiUniversalAdId(): PigeonApiUniversalAdId
563563

564+
/**
565+
* An implementation of [PigeonApiAd] used to add a new Dart instance of `Ad` to the Dart
566+
* `InstanceManager`.
567+
*/
568+
abstract fun getPigeonApiAd(): PigeonApiAd
569+
564570
fun setUp() {
565571
InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers(
566572
binaryMessenger, instanceManager)
@@ -705,6 +711,8 @@ private class InteractiveMediaAdsLibraryPigeonProxyApiBaseCodec(
705711
registrar.getPigeonApiCompanionAd().pigeon_newInstance(value) {}
706712
} else if (value is com.google.ads.interactivemedia.v3.api.UniversalAdId) {
707713
registrar.getPigeonApiUniversalAdId().pigeon_newInstance(value) {}
714+
} else if (value is com.google.ads.interactivemedia.v3.api.Ad) {
715+
registrar.getPigeonApiAd().pigeon_newInstance(value) {}
708716
}
709717

710718
when {
@@ -4905,3 +4913,209 @@ abstract class PigeonApiUniversalAdId(
49054913
}
49064914
}
49074915
}
4916+
/**
4917+
* An object that holds data corresponding to the main Ad.
4918+
*
4919+
* See
4920+
* https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/Ad.html.
4921+
*/
4922+
@Suppress("UNCHECKED_CAST")
4923+
abstract class PigeonApiAd(
4924+
open val pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar
4925+
) {
4926+
/** The ad ID as specified in the VAST response. */
4927+
abstract fun adId(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String
4928+
4929+
/** The pod metadata object. */
4930+
abstract fun adPodInfo(
4931+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
4932+
): com.google.ads.interactivemedia.v3.api.AdPodInfo
4933+
4934+
/** The ad system as specified in the VAST response. */
4935+
abstract fun adSystem(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String
4936+
4937+
/** The IDs of the ads' creatives, starting with the first wrapper ad. */
4938+
abstract fun adWrapperCreativeIds(
4939+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
4940+
): List<String>
4941+
4942+
/** The wrapper ad IDs as specified in the VAST response. */
4943+
abstract fun adWrapperIds(
4944+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
4945+
): List<String>
4946+
4947+
/** The wrapper ad systems as specified in the VAST response. */
4948+
abstract fun adWrapperSystems(
4949+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
4950+
): List<String>
4951+
4952+
/** The advertiser name as defined by the serving party. */
4953+
abstract fun advertiserName(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String
4954+
4955+
/**
4956+
* The companions for the current ad while using DAI.
4957+
*
4958+
* Returns an empty list in any other scenario.
4959+
*/
4960+
abstract fun companionAds(
4961+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
4962+
): List<com.google.ads.interactivemedia.v3.api.CompanionAd>
4963+
4964+
/**
4965+
* The content type of the currently selected creative, or null if no creative is selected or the
4966+
* content type is unavailable.
4967+
*/
4968+
abstract fun contentType(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String?
4969+
4970+
/** The ISCI (Industry Standard Commercial Identifier) code for an ad. */
4971+
abstract fun creativeAdId(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String
4972+
4973+
/** The ID of the selected creative for the ad, */
4974+
abstract fun creativeId(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String
4975+
4976+
/** The first deal ID present in the wrapper chain for the current ad, starting from the top. */
4977+
abstract fun dealId(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String
4978+
4979+
/** The description of this ad from the VAST response. */
4980+
abstract fun description(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String?
4981+
4982+
/** The duration of the ad in seconds, -1 if not available. */
4983+
abstract fun duration(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Double
4984+
4985+
/** The height of the selected creative if non-linear, else returns 0. */
4986+
abstract fun height(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Long
4987+
4988+
/** The number of seconds of playback before the ad becomes skippable. */
4989+
abstract fun skipTimeOffset(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Double
4990+
4991+
/** The URL associated with the survey for the given ad. */
4992+
abstract fun surveyUrl(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String?
4993+
4994+
/** The title of this ad from the VAST response. */
4995+
abstract fun title(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): String?
4996+
4997+
/** The custom parameters associated with the ad at the time of ad trafficking. */
4998+
abstract fun traffickingParameters(
4999+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
5000+
): String
5001+
5002+
/** Te set of ad UI elements rendered by the IMA SDK for this ad. */
5003+
abstract fun uiElements(
5004+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
5005+
): List<UiElement>
5006+
5007+
/** The list of all universal ad IDs for this ad. */
5008+
abstract fun universalAdIds(
5009+
pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad
5010+
): List<com.google.ads.interactivemedia.v3.api.UniversalAdId>
5011+
5012+
/** The VAST bitrate in Kbps of the selected creative. */
5013+
abstract fun vastMediaBitrate(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Long
5014+
5015+
/** The VAST media height in pixels of the selected creative. */
5016+
abstract fun vastMediaHeight(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Long
5017+
5018+
/** The VAST media width in pixels of the selected creative. */
5019+
abstract fun vastMediaWidth(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Long
5020+
5021+
/** The width of the selected creative if non-linear, else returns 0. */
5022+
abstract fun width(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Long
5023+
5024+
/** Indicates whether the ad’s current mode of operation is linear or non-linear. */
5025+
abstract fun isLinear(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Boolean
5026+
5027+
/** Indicates whether the ad can be skipped by the user. */
5028+
abstract fun isSkippable(pigeon_instance: com.google.ads.interactivemedia.v3.api.Ad): Boolean
5029+
5030+
@Suppress("LocalVariableName", "FunctionName")
5031+
/** Creates a Dart instance of Ad and attaches it to [pigeon_instanceArg]. */
5032+
fun pigeon_newInstance(
5033+
pigeon_instanceArg: com.google.ads.interactivemedia.v3.api.Ad,
5034+
callback: (Result<Unit>) -> Unit
5035+
) {
5036+
if (pigeonRegistrar.ignoreCallsToDart) {
5037+
callback(
5038+
Result.failure(
5039+
FlutterError("ignore-calls-error", "Calls to Dart are being ignored.", "")))
5040+
return
5041+
}
5042+
if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) {
5043+
Result.success(Unit)
5044+
return
5045+
}
5046+
val pigeon_identifierArg =
5047+
pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeon_instanceArg)
5048+
val adIdArg = adId(pigeon_instanceArg)
5049+
val adPodInfoArg = adPodInfo(pigeon_instanceArg)
5050+
val adSystemArg = adSystem(pigeon_instanceArg)
5051+
val adWrapperCreativeIdsArg = adWrapperCreativeIds(pigeon_instanceArg)
5052+
val adWrapperIdsArg = adWrapperIds(pigeon_instanceArg)
5053+
val adWrapperSystemsArg = adWrapperSystems(pigeon_instanceArg)
5054+
val advertiserNameArg = advertiserName(pigeon_instanceArg)
5055+
val companionAdsArg = companionAds(pigeon_instanceArg)
5056+
val contentTypeArg = contentType(pigeon_instanceArg)
5057+
val creativeAdIdArg = creativeAdId(pigeon_instanceArg)
5058+
val creativeIdArg = creativeId(pigeon_instanceArg)
5059+
val dealIdArg = dealId(pigeon_instanceArg)
5060+
val descriptionArg = description(pigeon_instanceArg)
5061+
val durationArg = duration(pigeon_instanceArg)
5062+
val heightArg = height(pigeon_instanceArg)
5063+
val skipTimeOffsetArg = skipTimeOffset(pigeon_instanceArg)
5064+
val surveyUrlArg = surveyUrl(pigeon_instanceArg)
5065+
val titleArg = title(pigeon_instanceArg)
5066+
val traffickingParametersArg = traffickingParameters(pigeon_instanceArg)
5067+
val uiElementsArg = uiElements(pigeon_instanceArg)
5068+
val universalAdIdsArg = universalAdIds(pigeon_instanceArg)
5069+
val vastMediaBitrateArg = vastMediaBitrate(pigeon_instanceArg)
5070+
val vastMediaHeightArg = vastMediaHeight(pigeon_instanceArg)
5071+
val vastMediaWidthArg = vastMediaWidth(pigeon_instanceArg)
5072+
val widthArg = width(pigeon_instanceArg)
5073+
val isLinearArg = isLinear(pigeon_instanceArg)
5074+
val isSkippableArg = isSkippable(pigeon_instanceArg)
5075+
val binaryMessenger = pigeonRegistrar.binaryMessenger
5076+
val codec = pigeonRegistrar.codec
5077+
val channelName = "dev.flutter.pigeon.interactive_media_ads.Ad.pigeon_newInstance"
5078+
val channel = BasicMessageChannel<Any?>(binaryMessenger, channelName, codec)
5079+
channel.send(
5080+
listOf(
5081+
pigeon_identifierArg,
5082+
adIdArg,
5083+
adPodInfoArg,
5084+
adSystemArg,
5085+
adWrapperCreativeIdsArg,
5086+
adWrapperIdsArg,
5087+
adWrapperSystemsArg,
5088+
advertiserNameArg,
5089+
companionAdsArg,
5090+
contentTypeArg,
5091+
creativeAdIdArg,
5092+
creativeIdArg,
5093+
dealIdArg,
5094+
descriptionArg,
5095+
durationArg,
5096+
heightArg,
5097+
skipTimeOffsetArg,
5098+
surveyUrlArg,
5099+
titleArg,
5100+
traffickingParametersArg,
5101+
uiElementsArg,
5102+
universalAdIdsArg,
5103+
vastMediaBitrateArg,
5104+
vastMediaHeightArg,
5105+
vastMediaWidthArg,
5106+
widthArg,
5107+
isLinearArg,
5108+
isSkippableArg)) {
5109+
if (it is List<*>) {
5110+
if (it.size > 1) {
5111+
callback(
5112+
Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)))
5113+
} else {
5114+
callback(Result.success(Unit))
5115+
}
5116+
} else {
5117+
callback(Result.failure(createConnectionError(channelName)))
5118+
}
5119+
}
5120+
}
5121+
}

packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/ProxyApiRegistrar.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,8 @@ open class ProxyApiRegistrar(binaryMessenger: BinaryMessenger, var context: Cont
141141
override fun getPigeonApiUniversalAdId(): PigeonApiUniversalAdId {
142142
return UniversalAdIdProxyApi(this)
143143
}
144+
145+
override fun getPigeonApiAd(): PigeonApiAd {
146+
return AdProxyApi(this)
147+
}
144148
}

0 commit comments

Comments
 (0)