Android SDK Release Notes¶
Version 12.3.0 - 4/6/2020¶
Fixed crash caused by non-standard change to activity lifecycle.
Fixed minor bugs to enhance data reporting reliability.
Version 12.2.0 - 1/9/2020¶
- API Additions:
- User Properties:
- Performance Metrics:
Version 12.1.0 - 12/2/2019¶
- API Additions:
- COPPA support:
- Performance Metrics:
Version 12.0.3 - 11/4/2019¶
Minor bug fix.
Version 12.0.2 - 11/1/2019¶
Version 12.0.1 - 10/15/2019¶
Fixed excess logging.
Version 12.0.0 - 10/02/2019¶
Completely redesigned SDK with modular analytics session.
Improved SDK cold start time, battery performance and memory performance.
Better event and error logging.
Resolved all strict mode violation in the SDK.
Session is instantly initialized after the init call. No wait for session to start.
Now supporting performance metrics.
FlurryAgent.onStartSession(final Context context, final String apiKey)
Version 11.6.0 - 03/12/2019¶
Updated criteria information to comply with Play Store requirements
Version 11.5.0 - 01/15/2019¶
address GDPR consent collection approach; reach out to Flurry legal to inquire about providing consent
Version 11.4.0 - 10/31/2018¶
Blocked ability to capture screen recording
Fixed intermittent crash when changing orientation
Fixed flurrySessionListener not firing
Version 11.2.0 - 08/14/2018¶
Fix for FlurryAgent.addOrigin() not working in Flurry SDK version 11.1.1
Fixed crash on AdRenderPolicy.getBackgroundColor()
Fixed intermittent crash when loading a video ad
Version 11.1.1 - 07/02/2018¶
Fix for opening Privacy Dashboard on lower end devices
Fixed intermittent crash when fetching native ads
Version 11.1.0 - 06/18/2018¶
Introduced support for Android Native crash
Fix for crash on SDK 11.0.0 if initialized within an activity context
Version 11.0.0 - 05/23/2018¶
Flurry Pulse API is no-op as service is End of Life as of 5/15. API to be removed in future release.
Update Ad cache flush logic when GDPR related user consent changes
Version 10.1.0 - 05/02/2018¶
Added support for App Links and Deep Links.
Android 10.0.0 - 04/12/2018¶
Added APIs for publishers to pass GDPR scope/ user consent
Added API for developers to take end users to Oath’s Privacy Dashboard for access/ download GDPR Data Subject Rights
Deprecated Flurry Pulse API (note: Product will End of Life on 5/15)
Version 9.0.0 - 02/19/2018¶
Major version release as SDK added support for Google Play Billing Library (com.android.billingclient:billing:1.0)
Added support for Crash Tags and Breadcrumbs in preparation for UI release in 2Q’18
Fix for dynamic ‘sponsored’ label text
Asset cache refactor (no API change)
Minor bug fix
Version 8.1.0 - 11/16/2017¶
Version 8.0.2 - 10/31/2017¶
Minor bug fix
Version 8.0.1 - 10/17/2017¶
Fix for a proguard issue
Version 8.0.0 - 10/12/2017¶
Support for Android O
Minimum supported Android API level is 16 for analytics and ads
Removed Tumblr in-app sharing
Version 7.2.3 - 07/26/2017¶
Fix for static ad viewability
Version 7.2.1 - 07/18/2017¶
Minor bug fix
Version 7.2.0 - 07/06/2017¶
Minor bug fix
Version 7.1.1 - 05/30/2017¶
Fix for proguard configuration
Version 7.1.0 - 05/24/2017¶
Support for re-engagement ads
Support for 3P viewability criteria for static ads
Added new 3P beacon for partially viewable ads
Version 7.0.1 - 04/19/2017¶
Fix for missing IAP receipts in case app goes to background
Version 7.0.0 - 04/05/2017¶
AAR packaging support to simplify SDK integration
Removed Flurry static Ads APIs
Deprecated Tumblr in-app sharing APIs
Version 6.9.2 - 03/03/2017¶
Fix for crash when opening advertiser’s landing url in custom chrome tabs
Version 6.9.1 - 02/28/2017¶
Fix for WebView issue causing ad to be shown blank in case app transitions from background to foreground
Version 6.9.0 - 02/24/2017¶
Switch to Chrome Tabs to open ad landing URLs if Google’s custom tabs dependency exists in the app. Without this dependency, ad landing URLs will continue to open in WebView.
Reintroduced (previously deprecated) API to report error log using class name for Crash Analytics
Fix for memory leaks
Improvements on analytics and ads to reduce battery drain
Version 6.8.0 - 01/12/2017¶
Improvements to reduce battery drain
Version 6.7.0 - 11/01/2016¶
Support for new image ad asset called Thumbnail (180x180)
Advertising beacon format improvement for Moat viewability support
Version 6.4.2 - 07/26/2016¶
Minor bug fixes
Version 6.4.0 06/17/2016¶
Portrait video support on interstitial ad spaces
Fix to play audio at mute/ device volume setting during video ads
Fix to continue video play during device orientation changes for infeed ads
Version 6.3.1 04/29/2016¶
Fixed ProGuard issue that could cause errors with debug app builds, although release builds are fine with 6.3.0.
Version 6.3.0 03/22/2016¶
Support for VAST video demand from RTB Marketplace in native ad unit. Publishers with native video ads enabled should see an increase in fill
Support for Moat 3rd party video viewability, which allows demand side to attract additional brand advertisers who have Moat viewability as a table stakes requirement.
Removed collection of IMEI per Google Play Content Developer Policy
Introduced builder pattern to initialize Flurry SDK
Version 6.2.0 11/09/2015¶
Support for expandable ad views for Gemini native ads. Publishers can construct an ad unit that is viewable in both collapsed and expanded format utilizing more detailed assets in the larger view.
Version 6.1.0 09/28/2015¶
Support for Pulse 2.0, providing more flexibility to share app data to mobile partners without integrating their SDKs. Learn more on Pulse here
Support for Android Marshmallow release
Fixes for conversion attribution in webviews
Version 6.0.0 - 08/25/2015¶
-Introducing Tumblr inapp sharing functionality that allows publishers to share content and deeplinks on Tumblr to drive installs and reengagement
Version 5.6.0 - 07/24/2015¶
Added support for Gemini native in-feed video ads
Added call to action text, app categories, and app star ratings for native ads
Improved handling of URL redirects
Deprecated keyword targeting
Version 5.5.0 - 04/29/2015¶
Session metrics are sent in one report instead of multiple overlapping fragments
Fixed ad caching issue where SDK makes a call to server for each fetch
Resolved race condition when getSessionID() and onSessionStarted() are used in conjunction
Removed callback onSessionFinished() for session end
Fixed couple of corner scenarios related to Pulse
Version 5.4.0 - 03/26/2015¶
Support for new product, Pulse (currently in developer preview), which allows applications to send app usage data to comScore through Flurry SDK.
Ads SDK jar size is < 500KB
Provided an API to check if native ad has expired
Provided an API to get current session ID and added callback at session start/end
Fixed NPE issue on Gingerbread devices
Fixed issue with setUserCookies()
Updated SDK support for display ads mediation- Admob, Millennial and inMobi
Version 5.3.0 02/17/2015¶
Introduced Yahoo Gemini Native ads support. Flexible ads that can be tailored to fit the design of any app
Support for Brightroll demand in video adspaces
Fix for duplicate firing of redirect URLs
Minor fixes for MRAID ads and Video timer display
Version 5.1.0 01/15/2015¶
Fixed issue with incorrect timestamps in session reports
Version 5.0.0 12/08/2014¶
New object-oriented APIs to make integration easier. It is recommended to use these APIs.
Sessions are automatically tracked on Ice Cream Sandwich (API level 14) and above
Ads SDK size is considerably reduced from 1.1MB to 590KB
Improved location tracking to avoid battery usage
Use of HTTPS is now mandatory due to Google Play! Store restrictions
Fixed issues with VAST wrapper and multiple click tracking URLs
Version 4.2.0 10/01/2014¶
Improved caching for videos served through VAST
Fixed rendering issues with MRAID ads
Removed SSL test code
Version 4.1.0 07/11/2014¶
Improved handling of Client side RTB auction
Introduced timeout if GPS location report cannot be read
Support for mediating banner and interstitial ads via Facebook Audience network
Improved reporting of events for postview in video ads
Google Mobile Ads is mediated through Google play services and support for standalone admob SDK is deprecated
Version 4.0.0 05/19/2014¶
Flurry Advertising SDK now uses the Android Advertising ID provided by Google Play Services and will check for and respect the user’s ad tracking preference. For more information, please visit https://developer.android.com/google/playservices/id.html
Back button is disabled for non-skippable video ads
Better user experience for videos and full screen ads on KitKat devices (4.0.0.rc.2 04/08/2014)
Support for VAST videos over RTB (Version 4.0.0.rc.1 03/24/2014)
Video ads can be user initiated or auto-play (4.0.0.rc.1 03/24/2014)
Pre-caching feature available for video ads (4.0.0.rc.1 03/24/2014)
Support for non-skippable video ads through portal setting (4.0.0.rc.1 03/24/2014)
Version 3.4.0 03/03/2014¶
Fixed a potential security vulnerability
Version 3.3.4 02/11/2014¶
Fix for missing uncaught exceptions in crash reports
Version 3.3.3 01/17/2014¶
Fix for occasional crash when installed on non-supported devices with Android API level < 10
Version 3.3.2 12/12/2013¶
Fixed issue with events missing in the session reports
Version 3.3.1 11/15/2013¶
Added support for MoPub adapter
Fixed some corner scenarios with ads redirecting to Android Market
Version 3.3.0 10/25/2013¶
Separate jars are provided for analytics and ads in this release. Please go through the upgrade document to see how to utilize them.
Minimum supported API level is 10 for analytics and ads
Invalidate ads cache when values for keyword targeting are changed
Added support to honor frequency cap of 1
Appcircle & Appspot takeover ads will be locked to the screen orientation in which they were fetched
Introduced listener method onRendered() to inform when an ad is rendered. It is required to implement this method in the application
Fix for RTB issue where auction may be held twice for same ad request
Fix for blank banner and takeover ads in some corner scenarios
Fix for offerwall issue where first adunit is not shown
Version 3.2.2 08/26/2013¶
SDK size reduced from 1.7MB to 1MB
Fixed crash related to asyncTask
Introduced getReleaseVersion() to return current version of Flurry SDK
getPhoneId() is now a private method
shouldDisplayAd() return value needs to be honored
Optimized network performance
Fixed 404 error page when displaying takeover ad
Improved handling of ad requests and rendering
Fixed behavior of back button on takeover screens
Version 3.2.1 - 06/21/2013¶
Changed the jar file name from FlurryAgent.jar to Flurry_<ReleaseVersion>.jar
Introduced isAdReady() to check if ad has been fetched and is prepared for display
Support for Millenial Media SDK 5.0.1
Support for InMobi SDK 3.7.0. Please make sure to read InMobi’s documentation as they have changed the behavior from their previous SDKs
Handle network connectivity loss during banner refresh. Removes the ad on connection loss. Please make sure that your app has permission to access network state. android.permission.ACCESS_NETWORK_STATE
Fix for interstitial ads and images creatives for low end Gingerbread devices
Bug fixes related to CPI/CPC ads, nonstandard size ads and fill rate events
Fix for offerwall issue
Fix for admob banner issue in landscape mode
Support redirection of click through for RTB app installs
Resume/pause CLIPS ad when screen goes to sleep
Version 3.2.0 - 04/04/2013¶
Moved advertising API from FlurryAgent to FlurryAds. Please check the migration notes for more details and build instructions
Improved support for frequency capped campaigns, frequency caps are now honored more accurately.
Added onVideoCompleted callback to FlurryAdListener
Improvements and bug fixes related to mediation and network waterfall campaigns
Bug fixes for layout of image creatives
Support for re-engagement campaigns
Support for crash analytics
Extended stack trace reporting for handled exceptions
Addition of crash reporting for unhandled exceptions
- Known Issues
If an application supports both orientations and a device changes from one orientation to another, the first few banner ads in new orientation may not display correctly. After the first few ads, ads will display properly. To avoid this issue, a developer can set up different ad spaces for each orientation and do a fetch on that ad space upon change of orientation.
Version 3.1.0 - 12/21/2012¶
added mraid 1.0 capability
fixed offerwall bug where a extra ad unit is added
fixed mediation display issues where it doesnt’ render properly on high-density devices
updated mediation libraries of Millennial to 4.6.0 and AdMob to 6.2.1
Version 3.0.9- 12/05/2012¶
added new methods fetch and display while deprecating getAd, isAdAvailable
fixed race condition between onStartSession and initAds or isAdAvailable
fixed AdSpaceLayoutParams For ViewGroup not called
fixed clips issue when Activity is in Background
fixed issue with mediated Ads not rotating correctly
fixed issue where urlVerified is added to list of events
fixed AppSpot initialization code and user cookie map
fixed issue where ad logs is sent on endSession
fixed CastClassException on AdSpaceLayout
fixed background processing causing high impression counts
Version 3.0.6- 11/20/2012¶
added fix to prevent ad rotation when device is locked
Version 3.0.5- 10/26/2012¶
added fix to prevent crashing of bad phone ids in AndroidSDK 2.2
Version 3.0.4- 10/15/2012¶
added additional delegate methods for spaceDidReceiveAd and spaceDidFailToReceiveAd when ads are/aren’t received
deleted unused delegate listener onReward
renamed IListener to FlurryAdListener
fixed offerwall bug where after app is installed and opened from the playstore, returning to app causes crash
fixed bug where banners are loaded faster than expected when device is rotated
fixed bug where onStartSession/initializeAds crashed due to race condition and phoneId.
added method for sending ad event logs for mediated networks to server on endSession
prevent mediated takeovers from auto-refreshing
Version 3.0.3- 09/26/2012¶
fixed rotation of network ads
allow users to opt out of viewing clips ads if they have not loaded
verified support for clips in AdUnity
verified support for re-engagement in AdUnity
fixed concurrent modification exception race condition when trying to send logs
fixed offerwall bug where min, max offers not being honored
added support for network mediation of millenial 4.6.0
fixed auto-rotation of offerwall templates
fixed bug where non-supported clips video would attempt to be played
Version 3.0.2- 07/30/2012¶
Added a public method “enableTestAds” to fetch all ads in test mode
fixed impression tracking bug that resulted in impressions=clicks in reporting
fixed offerwall bug where closing one fullscreen offerwall opened another
fixed offerwall bug where low number of offers shown
fixed templating bug caused by ads with an apostrophe in title or description
fixed a bug that prevented install_referrer from working with the google play store
Version 3.0.1- 07/12/2012¶
Fixes potential race conditions on startSession and initializeAds
Fixes clearing of user cookies.
Fixes visibility of user logs and warnings in case of incorrect integration
Fixes potential clashes of libraries if developers are using the same.
Version 3.0.rc.128 - 06/14/2012¶
Adds method to check if an ad is available
Adds method initialize to allow precaching of ads at startup.
Adds methods setKeywordsForTargeting:(NSDictionary *)keywords to allow campaign targeting based on developer supplied key-value pairs.
Updates FlurryAgent.getAd to include a default ad size parameter.
Updates FlurryAgent.getAd to display ad completely asynchronously (without blocking) when timeout is set to 0. This is useful for the display of banners where interaction with the app can continue unimpeded by the ad display (in contrast to an interstital view).
Implementation of Rewarded Catalogs
Updates ad tracking to specify unique key for every distinct frame.
Added method to enable setting up individual ad spaces to receive test ads.
Version 3.0.a.124 - 05/09/2012¶
Allows finer control of ad display with new method FlurryAgent.removeAd(Context context, String myAdSpaceName, ViewGroup viewSpace);. This method allows a publisher to decide exactly when to remove an ad from a view.
Adds checks for failed requests to receive ads from third party networks.
Prevents code paths that can result in infinte loops
Updates location to send ad logs
Version 3.0.a.123 - 05/02/2012¶
Initial Release of Alpha SDK
Version 2.2.5 - 02/22/2012¶
Unique Ids for event logs, error logs, and ad logs
Reports IMEI unique identifier given user granted permission
Checksum for validating data integrity of session reports
Version 2.2.4 - 12/08/2011¶
Fix to event timing
Records prior session getOffer ads if they’ve been reactivated in the current session
Version 2.2.3 - 11/23/2011¶
Update Session timeOffset logic to avoid possible ad id collisions within a session.
Properly reset all AppCircleModule session-related data on each valid session start.
Refactors generating of urls from BannerView
Version 2.2.2 - 11/18/2011¶
Fixes a timing parameter for buy click links for getOffer.
Increases the image cache.
Adds more debug logging for logEvent methods.
Version 2.2.1 - 10/04/2011¶
Fixes NullPointerException when event for failed Android Market launch does not have an AppCircleCallback set.
Version 2.2 - 08/15/2011¶
Add API to optionally set session reporting request to HTTPS.
Detect and report devices with non-unique device IDs.
Fixed NullPointerException, ArrayOutOfBoundsException, ConcurrentModificationException on resume of session.
Version 2.1 - 03/24/2011¶
The process of accepting an Offer is significantly easier. Instead of processing a raw URL, the developer merely has to pass an offer ID to the SDK which automatically handles the process of communicating with Flurry servers and launching the Android Market page for the recommended application.
In addition to the Offer ID, the price and description of the app are also available.
Rather than retrieving one random Offer, developers will have access to all the Offers that is available in the SDK at that time.
The SDK now backfills banners if they are displayed while ads are in the process of downloading. The ads will automatically be placed in the banner when they are available.
The showCatalog() previously would not launch if there are no ads available (e.g. if there was a lack of network connectivity) without feedback to the user. It will now launch with the message “No recommendations available”.
There is support for customizing the Intent name for launching the catalog. Previously a user opening a catalog would be forced to choose from a list of applications integrated with Flurry AppCircle due to these applications sharing the same Intent name for launching the catalog.
Availability of Ads
There is now a simple method, hasAds(), to determine whether the SDK can supply any ads to be displayed. The new AppCircleCallback interface also allows the developer to determine the moment when new ads have been downloaded and are available.
New Callback Interface
The developer can implement the new AppCircleCallback interface to receive AppCircle-type events.
These events are - ads have been downloaded from the network - ads have been loaded from cache - there is an error when launching the Android Market app
Google introduced a set of tests to check for conditions detrimental to user experience. Previous versions of the SDK violated one of these tests – writing and reading from the file system using the UI thread. This version passes all the tests.
the logEvent(String eventId, boolean timed) for timed events no longer ignores the “timed” parameter
the gender constants are now of byte type to match the setGender(byte gender) method
Version 2.01 - 03/01/2011¶
Fixed potential race condition.
Version 2.0 - 02/01/2011¶
Initial release with AppCircle
Version 1.24 - 03/25/2010¶
Page View tracking added
Version 1.23 - 10/02/2009¶
disable location update after timeout
Version 1.22 - 08/18/2009¶
allow specification of Location Criteria
Version 1.21 - 06/12/2009¶
Collect uncaught exceptions, configurable agent logging, use only android ID instead of IMEI
Version 1.20 - 04/14/2009¶
Improved session handling across Activities
Version 1.12 - 03/26/2009¶
Version 1.11 - 03/13/2009¶
Try ANDROID_ID for phone id
Log error on calls to onEvent or onError outside of a session
Report whether a session event log is complete
Version 1.10 - 03/03/2009¶
Events 2.0 (logs, params, sequences)
Version 1.0 - 03/03/2009¶
Better device identification, more careful synchronization
Send old sessions on start up
Ability to disable report location
Report error counts
Initial Android Agent