Changelog
Changes to functionality will be detailed here. As of version 2.0.0, the Nimbus SDK team adheres to Semantic Versioning: as follows:
MAJOR version when incompatible/breaking API changes are introduced
MINOR version when functionality is added in a backwards compatible manner
PATCH version when backwards compatible bug fixes are made
2.19.2
Added:
Added support for Extended ID atype field
Fixed:
Fixed some rewarded ads starting too early
2.19.1
Fixed
Removed calls to deprecated Google Adapter methods
2.19.0
Fixed
Fixed some interstitials ads starting too early
2.18.0
Fixed
Mute not applying correctly to some video ads
Crash on WebView render process crashes
Companion ads not centering properly
2.17.0
Added
Adds language code to request by default
Validation for invalid advertising IDs
2.16.0
Added
OM Viewability to NimbusRequest by default
Changed
Deprecated thirdPartyViewabilityEnabled
2.15.0
Added
Vungle Native Ads support
Fixed
Removed WebChromeClient from static renderer to void issues with popups
2.14.2
Fixed
Fixed click event not firing in interstitial for Nimbus Rendering Dynamic Price
Fixed interstitial opening automatically when resuming app for Nimbus Rendering Dynamic Price
2.14.1
Fixed
Fixed hidden mute button capturing clicks
2.14.0
Added
MobileFuse render functionality implemented
VAST 4.0 protocols for Video requests
Creative scaling for Vungle Ads
2.13.3
Added
Callback for Companion Ads clicks
2.13.2
Fixed
Google ad events not firing when Nimbus is rendering dynamic price
Sizing for video when Nimbus is rendering Dynamic Price
2.13.1
Fixed
Scaling issue when Nimbus is rendering dynamic price ads
2.13.0
Added
Dynamic Adapters for AdMob
Changed
Improved ad quality for GAM Dynamic Price
2.12.0
Added
Dynamic Price support for rewarded and rewarded interstitial
Changed
Nimbus icons' filenames - changed prefix to "ic_nimbus_"
2.11.0
Improved Meta Rewarded Video Ads
2.10.0
Changed
Bug fixes and improvements
2.9.0
Added
Added a possibleObstructionListener to Renderer to help debug obstruction cases
Fixed issue with Vungle Banners that were not triggering Loaded events
Improved ad-tapping detection
2.8.0
Added
Support for using Nimbus Renderers with Dynamic Price
Pixel scaling ratio included in the Nimbus request
Volume control on inline video ads can now be enabled on the VideoAdRenderer
2.7.0
Added
Support for sending win / loss notifications to Nimbus
2.6.1
Fixed
Potential crash if view obstructing a Nimbus ad removed during exposure calculation
2.6.0
Added
Support for Vungle demand
2.5.0
Note for Kotlin Developers:
This update may be source incompatible with previous versions; usage of the following listeners should be updated to mark the parameters as non-nullable.
AdController.Listener : AdEvent.Listener, NimbusError.Listener
NimbusAdManager.Listener : Renderer.Listener, RequestManager.Listener
Added
NimbusRequest.addApsResponse
andNimbusRequest.addApsLoader
helper methods for including APS paramters in the request to Nimbus.
Changed
Initialization and requesting components now use Kotlin coroutines for background processing and thread communication.
ApsDemandProvider
has been deprecated. Instructions for initializing and including Amazon demand in the Nimbus auction can be found on the Third Party Demand APS page.
Fixed
Crash that occurs if a request to Nimbus is made before the SDK has been initialized
2.4.1
Added
NimbusRequest.forVideoAd() helper method for requesting videos
Fixed
Issue preventing videos larger than the player to scale down to size
2.4.0
Added
Added thirdPartyViewabilityEnabled flag to the Nimbus object
Added configureViewability method on NimbusRequest
Changed
Enabled OM Viewability for all showAd / showBlockingAd / showRewardedAd requests
Enabled OM Viewability for APS requests
2.3.0
Added
Extended ID helpers to NimbusRequest and NimbusAdManager
Changed
Code related to the rendering of ads has been moved from the core and ui module to a new render module
The nimbus-ui module is now deprecated; the module will continue to be included transitively but any explicit declarations of "com.adsbynimbus.android:nimbus-ui" in a build should be removed.
2.2.2
Changed
Updated NimbusAdManager to store keys and request url on each instance
Fixed
Fixed scaling issue causing video to crop when rendered inline
2.2.1
Behavior Changes
Increased window for detecting clicks from 100ms to 200ms
2.2.0
New Features
Added support for the IAB Global Privacy Platform (GPP)
Behavior Changes
Updated Google Mediation Adapter to map adaptive sizes to Nimbus formats
Removed dependency on StaticAdRenderer from NimbusAdManager
Updated Dependencies
Nimbus OpenRTB: 0.9.6
2.1.1
Behavior Changes
Fixed issue causing ViewabilityProvider to incorrectly inject markup rendered by other SDKs
Fixed compilation issue when using ExoPlayer 2.17+ in a consumer build
Updated NimbusTaskManager to initialize before call to ServiceLoader
Fixed issue where request builder not respecting orientation set on NimbusRequest
Updated Dependencies
LiveRamp: 1.4.1
OM SDK: 1.4.2
2.1.0
New Features
Added support for LiveRamp ATS
2.0.0
New Features
Fully rewritten MRAID 3.0 implementation which adds support for expandable and resizable ads.
Breaking Changes
Removed the extension-okhttp module; it is no longer required and should be removed from the build.
Removed the extension-exoplayer library; it is no longer required and should be removed from the build.
Removed the extension-mopub library; MoPub service was shut down March 31st, 2022.
The OkHttpNimbusClient Companion object has been removed and removes the following functions.
setOkHttpClient has be replaced with
RequestManager.setClient(OkHttpNimbusClient(OkHttpClient.Builder()))
.setGson has been removed and the use of Gson is no longer supported.
JSON_MEDIA_TYPE, HEADER_CONTENT_ENCODING, and GZIP constants have been removed.
The DemandProvider interface and companion object has been removed. Any usage of the DemandProvider interface can be replaced with a NimbusRequest.Interceptor installed on the RequestManager.interceptors set.
String constants in the NimbusRequest Companion object have been removed.
The userDidConsent parameter in setGdprConsent has been removed; consent is read from the TCF string by Nimbus.
Behavior Changes
Requests that include banner ads will additionally request MRAID 3 ads.
Refreshing Ads now have an enforced 30 seconds minimum.
1.12.2
Behavior Changes
Fixed issue where attempting to retrieve TCFv2 gdprApplies value can crash
1.12.1
New Features
Volume icon for full screen video ads now bundled with Nimbus SDK.
Behavior Changes
Fixed issue where full screen ads loaded using application context may not render.
Fixed issue where video ad may not start with volume on if rendered full screen.
NimbusActivityCustomEvent Google adapter is deprecated and now extends NimbusCustomEvent.
1.12.0
New features
Added support for TCFv2. If a Consent Management Provider SDK is present, the Nimbus SDK will attempt to retrieve the consent string automatically.
Behavior Changes
Blocking ads will now attempt to retry showing if transitioning from one Activity to another. This behavior change should fix any crashes associated with showing blocking ads.
APSDemandProvider will now request ads at the time a Nimbus Request is made instead of precaching bids.
1.11.6
Behavior Changes
Fixed NullPointerException regression in Google Mediation adapter from 1.11.5
1.11.5
Behavior Changes
Fixed issue where refreshing ad does not respect timeout on network error
Fixed issue where API 7 flag duplicated in request when used with refreshing ad unit
Fixed issue where connection type was not added to the outbound request
Added 5 second timeout to close button on Google Mediated Ads
Updated Blocking Ads to request hardware acceleration for video to add Unity support to the Exoplayer extension
1.11.4
New Features
Added support for Dynamic Price video ads
Behavior Changes
Fixed dependency compatibility issue when building with Kotlin 1.4
Fixed incorrectly removed deprecated properties in 1.11.2 with additional replacements hints
Fixed crash on Android 5 devices when retrieving network type
1.11.3
Behavior Changes
Fixed issue where refreshing ad does not respect the refresh interval if the very first response is a NO_BID error.
Dependency Updates
exoplayer-extension minimum Exoplayer version updated to 2.15.0
1.11.2
New features
Added NimbusAdManager.setGdprConsent and RequestManager.setGdprConsent helper methods. See Privacy for more information and examples.
Behavior Changes
Fixed issue where refreshing ads would not fire events. This fixes a regression introduced in version 1.10.10 and 1.11.2 should be use if using refreshing ads.
Impression bid floor has been removed. To set the bid floor from the client use the banner or video objects accessible in the NimbusRequest.
Calling
setGson
on the OkHttpNimbusClient is now a no-op. Serialization is handled by Kotlin now.
Breaking Changes
NimbusRequest helper methods such as
forBannerAd
andforInterstitialAd
have been moved to a companion object. If using Kotlin, the imports for those functions will need to be updated or prefixed likeNimbusReqeust.forBannerAd
as referenced in the requesting documentation.NimbusResponse now wraps the BidResponse object. Property calls to NimbusResponse such as
nimbusResponse.position
should change tonimbusResponse.bid.position
Function calls as part of the NimbusAd interface such asnimbusResponse.markup()
continue to work as before.
1.11.1
New Features
Added Viewability extension for providing metrics using the OM SDK. To enable Viewability refer to the OM-Viewability page.
Behavior Changes
Fixed crash if static ad is clicked while rendering.
1.11.0
Behavior Changes
Fixed issue where LOADED event could fire twice for some static ads.
Fixed issue preventing Unity Rewarded Video from rendering.
1.10.11
Behavior Changes
Fixed issue where ads can open without user click action.
1.10.10
New Features
Updated dependencies to support Android 12
Added extension methods for adding parameters to a MoPub ad or Google ad request when using Dynamic price.
Fixed potential crashes when loading or clicking on static ads.
Fixed issue preventing click-through on video ads after 5 seconds elapsed until video end.
Added checks to prevent state issue crash dismissing full screen ads.
Behavior Changes
Calls to NimbusAdManager.makeRequest() now callback on the main thread.
Fixed issue where scrolling views placed over a Nimbus Ad with a blank space incorrectly reports the ad as being covered. (NOTE: Blank views placed on ads or within a scrolling view on top of an ad must be marked as invisible or have its alpha set to 0 otherwise the ad will report itself as covered.)
1.10.7
Behavior Changes
Refreshing ads will always call onAdResponse to notify when the next ad is ready to be shown
Added small delay between video load and start when loaded as an interstitial
1.10.6
Fixed crash if blocking ad shown after hosting activity is destroyed.
1.10.5
Behavior Changes
Fixed issue where refresh logic might not trigger if no layout passes happen on screen.
AdController now always passed back before firing loaded event.
Static ads now destroy the WebView after a 1 second delay.
Static ads only fire resumed event if paused first.
Fixed issue reporting exposure to MRAID ads.
Fixed issue resolving OpenRTB request models.
1.10.4
New Features
Added support for Unity Rewarded Video Demand
Behavior Changes
The default mapping for Nimbus Dynamic Price has changed. Please ensure your Nimbus Dynamic Price mapping matches your environment if the mapping was not being set on the Nimbus Dynamic Price request.
Fixed potential crashes if MoPub ad is invalidated during load of Nimbus Ad
1.10.3
Behavior Changes
All rewarded ads calls will now have an end card automatically included.
NimbusAdManager.showRewardedVideoAd has been deprecated and replaced by showRewardedAd. Please note if migrating calls from showRewardedVideoAd to showRewardedAd, the close button delay value has been changed from milliseconds to seconds and the calls should be updated with the appropriate values.
showBlockingAd now has a default 5 second close button delay. To revert to the previous behavior, change the call to showBlockingAd to use the 4 parameter version.
showBlockingAd(nimbusRequest, 0, activity, listener)
1.10.2
Behavior Changes
Added support for MoPub MREC ad units in NimbusMoPubAdapter
Setting the App object during initialization is no longer required
1.10.1
Behavior Changes
Updated Google Ad SDK to 20.0.0
Blocking Ads now use the full screen by default
Migration Steps (Google Dynamic Price Only)
Version 20.0.0 of the Google Ad SDK introduces new names for banner and interstitial ad units. For any place NimbusDynamicPrice is being used, make the following changes:
Change all instances of
PublisherAdRequest.Builder
toAdManagerAdRequest.Builder
Change all instances of
PublisherAdView
toAdManagerAdView
Change all instances of
PublisherInterstitialAd
toAdManagerInterstitialAd
. AdManagerInterstitial changes how interstitial ads are requested from Google. See the below code sample for the new convention.
More information about the API changes in 20.0.0 can be found on the Ad Manager Migration page.
1.10.0
In this release we have migrated our packages from Bintray to S3 and no longer require credentials to access the packages.
Migration Steps
Remove the following two repository definitions
Add the new S3 maven repository
The updated [Quickstart] guide also contains the new repository for reference.
Behavior Changes
Fixed keyword delimiter for MoPub Dynamic Price
1.9.1
Behavior Changes
Fixed issue where APS Demand was not included in outbound requests
1.9.0
New Features
Added a new NimbusMoPubAdapter to simplify MoPub integration.
Added new com.adsbynimbus.google.NimbusCustomEvent class to simplify Google integration.
Added Nimbus.setUsPrivacyString() to set US privacy on requests and demand integrations
Behavior Changes
Fixed crash in StaticAdController if ad destroyed while scrolling
Fixed issue where interstitial close button could be blocked by system UI
com.adsbynimbus.mopub.NimbusBlockingAd and com.adsbynimbus.mopub.NimbusInlineAd have been deprecated
com.adsbynimbus.google.NimbusCustomEventBanner and com.adsbynimbus.google.NimbusCustomEventInterstitial have been deprecated
Removed FragmentActivity version of NimbusAdManager.loadBlockingAd(). No code changes should be required.
1.8.0
New Features
Updated Google Ad Manager Nimbus Dynamic Price to pass through ad id for server use
1.7.3
Behavior Changes
Fixed issue where ad unit would not refresh if no bid
Updated NimbusDynamicPrice constructor to work with MoPub interstitial
1.7.2
Behavior Changes
Fixed crash when refreshing ads in background
Fixed issue where video playback continues when app backgrounded
1.7.1
Behavior Changes
Fixed issue where video would not stop playback when in background when blocking ad called with Activity
Fixed issue causing Mopub interstitial adapter to not call onInterstitialShown callback
1.7.0
New Features
Added Rewarded Video request helper methods
Added helper methods for showing the close button on a delay
Added FANAdRenderer.setLegacyBannerPlacementIds() to mark legacy 320_50 placements
Behavior Changes
showBlockingAd calls now how have a close button enabled by default
Breaking Changes
FANAdRenderer will now map a 320x50 NimbusAd to a BANNER_50 Facebook Ad. If your app uses the legacy BANNER_320_50 size, add the placement id to the FANAdRenderer using setLegacyBannerPlacementIds()
1.6.3
New Features
Added Nimbus Dynamic Price for Google
Breaking Changes
Mapping, LinearPriceGranularity, and LinearPriceMapping moved to com.adsbynimbus.lineitem package
1.6.2
New Features
Adds support for Android 11
Device connection type will fallback to link speed if permissions not granted
1.6.1
Behavior Changes
Fixed issue where showAd() with a refresh interval did not call onAdRendered()
1.6.0
New features
Added Nimbus Dynamic Price for MoPub
Behavior Changes
Fixed issue where MoPub interstitial adapter did not trigger impression/dismissed
MRAID exposure events will now throttle events under 100ms
1.5.2
Behavior Changes
Added showAd() override to allow for refreshing ad units
1.5.1
Behavior Changes
Fixed issue where APS parameters not appended to banner request
Updated IMA SDK to 3.19.4
1.5.0
New Features
Interstitial support
Support for Mopub BaseAd adapters for use with Mopubs SDK >= 5.13.0
Behavior Changes
Companion objects from Nimbus OpenRTB now removed by R8 (-16 method references, -1.8 kb)
Breaking Changes
NimbusCustomEvent classes for Mopub moved to mopub-customevent artifact for Mopub <= 5.12.1
1.4.0
New Features
Companion Ad support
1.3.8
Behavior Changes
Facebook Ads now send AdEvent.LOADED event on succesful load
Fixed MRAID not loading when publisher key used to initialize is not lowercase
Static ads now load with the baseurl http://local.adsbynimbus.com
1.3.7
Behavior Changes
Device object no longer overwritten on request if previously set
1.3.6
Behavior Changes
Disabled encoding of Html characters in serialized NimbusRequest
1.3.5
Behavior changes
Fixed consumer proguard files to prevent obfuscation of responses
1.3.4
Behavior Changes
Facebook ads destroy properly if AdController destroyed during load.
1.3.3
Behavior Changes
FAN Renderer implementations no longer check to see if ad is interstitial before rendering; the renderer capability check is handled by the calling function to render the ad.
Fixed keyword clash when interacting with native impression objects in Java. When accessing use setNative() and getNative()
NimbusAdViewFragment no longer dismisses upon completion by default. To enable this behavior, call the setDismissOnComplete(true) on the instance of the fragment.
Updated Static loaded event to fire after controller is returned
1.3.2
Behavior Changes
Static Ads no longer fail when requesting non-existent local assets.
1.3.1
Behavior Changes
Added support for native OpenRTB impression requests.
Fixed crash on click through for ads instantiated with an application context
1.3.0
New Features
Added OpenRTB model documentation to SDK docs
OpenRTB models now support usage as Kotlin properties
Optimized code shrinking rules to library size on release builds
Added support for Facebook interstitial ad units. Please see note in Demand-Sdk-Integrations
Behavior Changes
MRAID no longer errors if creative adds unknown event listeners.
Breaking Changes
All OpenRTB models (App, User, etc) have moved to the com.adsbynimbus.openrtb.request namespace
OkHttpNimbusClient and ApsDemandProvider have moved to the com.adsbynimbus.request namespace
1.2.0
New Features
Added Google extension for integration with GAM
Behavior Changes
Views managed by an AdController will reattach visibility listeners if it's parent changes
1.1.6
New Features
Added ability to set a global request url for proxy servers
1.1.5
New Features
Added click tracking for Static and FAN ads
Behavior Changes
Session Id can now be get and set by calling Nimbus.(get|set)SessionId()
Video ads no longer automatically destroy on completion. Please call ensure destroy() is called when an ad should no longer be shown.
1.1.1
New Features
Added MoPub extension for integrating with MoPub.
1.1.0
New Features
Added Facebook extension for integrating with Facebook
1.0.0
BREAKING CHANGES
NimbusSDK
class has been removed; initialization has been moved to the Nimbus class.Nimbus.initialize(Context context, String publisherKey, String apiKey)
must be called before the SDK can be used.The
api_key
andurl
in the application manifest are no longer used and can be removed.The app object passed to
NimbusSDK.initialize()
must now be set by callingNimbusAdManager.setApp()
.Test mode is now enabled by using
Nimbus.setTestMode(true);
BidRequest
object has been renamed toNimbusRequest
.fillInterstitialAd()
andfillBannerAd()
have been renamed toforInterstitialAd()
andforBannerAd()
Creating a new
NimbusRequest
object can be done using staticforInterstitialAd()
andforBannerAd()
methods.NimbusAdManager
no longer requires a context.NimbusAdManager.requestAd()
has been renamed toshowAd()
.AdController
has been moved to com.adsbynimbus.render package.The
AdController.render()
function has been removed. Calls toshowAd()
will immediately render an ad.AdEventListener
has been relocated to com.adsbynimbus.render.AdEvent.ListenerStaticAdProvide
r andVideoAdProvider
have been renamed toStaticAdRenderer
andVideoAdRenderer
StaticAdProvider.WebViewProvider
has been removed and should be removed from code.ExoPlayerVideoPlayerProvider
has been renamed toExoPlayerVideoDelegate
The provider methods for setting a
DataSource.Factory
can be set by overridingExoPlayerVideoDelegate.ExoPlayerFactoryDelegate
and callingExoPlayerVideoDelegate.setExoPlayerFactoryDelegate()
VideoAdRenderer
delegate for customizing the IMA SDK settings can be set by callingVideoAdRenderer.setDelegate()
OkHttpRequestManager
has been renamed toOkHttpNimbusClient
.OkHttpNimbusClient
initializes with default client and gson and can be overridden by callingsetOkHttpClient()
andsetGson()
ApsDemandProvider
is initialized by callingApsDemandProvider.initialize()
Removed dependencies on androidx.lifecycle
Renamed
Nimbus.LogProvider
class toNimbus.Logger
.Loggers can be added and removed by calling
Nimbus.addLogger()
/Nimbus.removeLogger()
Behavior Changes
Render has been removed and ads will render automatically when calling
showAd()
Video ads will now manage playback state automatically as they move on and off the screen.
The automatic playback of ads can be controlled by calling
start()
andstop()
on anAdController
. Stopping an ad will always stop playback.Due to a simplification of
NimbusRequest
, if a video only or static only interstitial request is desired, create a newNimbusRequest
usingforInterstitialAd()
and then set the corresponding object to null;
To modify the price (or any other field) of a request, use the included builder methods
New Features
COPPA can now be set application wide by calling
Nimbus.setCOPPA(true)
Renderers can be installed using
Renderer.install()
The exoplayer and okhttp extensions install and configure themselves automatically if included in the build.
DemandProviders can be added by calling
DemandProvider.install()
The BidRequest object can be modified in place by accessing the bid object on the NimbusRequest class.
0.1.6
Behavior Changes
Changed WebView to raster off screen always
Remove user interaction block on webview when static ad starts
0.1.3
New Features
Added ExoPlayerVideoPlayerProvider for using an SDK controlled ExoPlayer instance
0.1.2
New Features
Added WebViewProvider interface for configuring creation of WebViews for the StaticAdProvider
Breaking Changes from 0.1.0
Changed parameters of 2nd NimbusSdk.initialize() method. It is now
0.1.0
Breaking Changes from < 0.1.0
BidRequest object now must be instantiated; this can be done by calling
Last updated