3.0.0
The first release with a single version for all platforms and public documentation. Earlier builds had separate numbers for Android, iOS and the browser. Starting with 3.0.0 there is one version.
Breaking changes
- The version number is now shared by Android, Android TV, iOS and the browser. Use version
3.0.0in the SDK address instead of the platform-specific numbers. in the VAST URL now resolves to3.0.0(was2.5.0).- iOS An error before the ad loads arrives in the same shape as every other event:
{ name: "AdError", code, message, type, … }instead of adatafield. - Web The playback-blocked error code is now
permission_denied(waspremission denied). autoplay=falseandautoplay=0no longer turn autoplay on.
Added
- SDK address on the CDN: platform and version in the path —
https://cdn.adsdk.ru/android/v3/. Thev3channel gets every 3.x fix,v3.0.0never changes,latestis for debugging. Theosparameter still works for addresses without a platform in the path. - Redesigned ad UI on Android, Android TV and iOS: new button layout and a scrim behind the buttons for readability.
- Android TV The
ad-noticecontrol: a caption about ads in the corner of the screen. - The
allvalue incontrolsenables every control available on the platform. - The SDK waits until the page has a size before loading an ad. If the page still has no size after 3 seconds,
AdErrorarrives with codeviewport_unavailable. os=webin a WebView now fails right away withAdErrorcodeweb_ui_in_native_build.
Fixed
- Android An error before the ad loads reaches
AdErroronce instead of twice. The SDK picks the signature the app declared: 6, 4 or 3 arguments. - Android
AdPodCompletedreceivesad_is_lastinstead ofundefined. AdPodCompletedreports the real pod length instead of0, and the number of shown creativesad_pod_showed_counton every platform.AdSkippableStateChangedpassesstatus: trueinstead of an event object. On Android theAdSkippableStateChanged(Boolean)method is now actually called.- Web Styles load from the stable
style.cssaddress. - Web
AdsEndedfires once instead of twice. getAdCurrentTimeSec()returns seconds instead of milliseconds. When the app's player plays the video, it returns the time fromtimeupdateAd(), so the skip button countdown runs correctly.getAdSkippableState()returnstrueafterAdSkippableStateChanged, including when the app's player plays the video.- Every creative of an ad pod becomes skippable:
AdSkippableStateChangedused to fire for the first one only. - With
autoplayin a WebView the ad becomes skippable atskipoffset, not right after it starts. - When the platform cannot be detected,
androidis used instead of an empty UI. - Invalid
ad_media_file_widthandad_media_max_duration_secvalues are ignored instead of breaking media file selection. AdLoaded, quartiles andAdCompletefire exactly once per creative, VPAID included.- Web
AdCompletetracking. - Web Unhandled promise rejection when starting playback.