Skipping behaviour broken since 3.607.0

938 views
Skip to first unread message

Andreas Kogler

unread,
Dec 5, 2023, 5:32:12 AM12/5/23
to Interactive Media Ads SDK
SDK: HTML5

Hello,
we've noticed that it's not possible anymore to skip ads programmatically since 3.607.0 (released on 4th Dec 2023).

Calling `adsManager.skip()` doesn't seem to have any effect, even though `adsManager.getAdSkippableState()` returns `true`. Clicking on the `Skip` button still actually skips the ad.

You can use the attached page, which is a modification of the official simple-example from the IMA sample repo to reproduce the issue.

The following code was altered in the sample:

// use a skippable ad adsRequest.adTagUrl = 'https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_preroll_skippable&sz=640x480&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=' ... // try skipping once the ad started adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, ev => { onAdEvent(ev); skip(); }); ... function skip() { if (adsManager.getAdSkippableState() === false) { console.warn('Ad is not skippable, retrying in 100ms'); setTimeout(() => skip(), 100); return; } console.warn('Skipping ad!'); adsManager.skip(); }
index.html

Andreas Kogler

unread,
Dec 5, 2023, 5:32:23 AM12/5/23
to Interactive Media Ads SDK
index.html

IMA SDK

unread,
Dec 5, 2023, 7:25:26 AM12/5/23
to ima...@googlegroups.com

Hi Andreas,

Thank you for contacting the IMA SDK support Team.

I will check with our team regarding your issue and one of my team members will reach out to you once we have an update on this. Meanwhile, your patience is highly appreciated. 

This message is in relation to case "ref:!00D1U01174p.!5004Q02qWhrN:ref"

Thanks,
 
Google Logo IMA SDK Team


IMA SDK

unread,
Dec 6, 2023, 6:58:56 AM12/6/23
to ima...@googlegroups.com

Hi Andreas,

Starting version 3.607.0, the IMA SDK has a change in behavior to only allow the AdsManager.skip() function for some beta customers. At this point, we cannot accept new customers in the beta program. Users can still skip ads when they click the skip button on the ad's UI. 

Andreas Kogler

unread,
Dec 6, 2023, 9:01:07 AM12/6/23
to Interactive Media Ads SDK
Thanks for the reply.

That's a very drastic change affecting functionality of our IMA integration without any workaround, I'm surprised. As it's a breaking change, it would be nice to have it visible in the release notes for 3.607.0.
Any plans of making AdsManager.skip() usable for the public again?

IMA SDK

unread,
Dec 6, 2023, 9:26:01 AM12/6/23
to ima...@googlegroups.com

Hi Andreas,

Thank you for getting back to us.



I will check with our team regarding your issue and one of my team members will reach out to you once we have an update on this. Meanwhile, your patience is highly appreciated.  

This message is in relation to case "ref:!00D1U01174p.!5004Q02qWhrN:ref"


Thanks,
 
Google Logo IMA SDK Team


IMA SDK

unread,
Dec 6, 2023, 1:50:16 PM12/6/23
to ima...@googlegroups.com
Hello Andreas,

This is Jackson from the IMA SDK team, here to help with your issue.

I understand your concern with the change to AdsManager.skip(). On our end, we did not see this as a breaking change, since the API is still functioning in its intended use-case.

Would it be possible to explain your use-case for AdsManager.skip() and how the IMA rendered 'Skip ad' button does not cover this. Any code snippets you could share would be helpful to understand the use-case as well.

The IMA team is looking into way of offering more customizability for the IMA ad UI, but I currently do not have any timelines I can share for those changes.

Thank you,
Jackson
IMA SDK team

ref:!00D1U01174p.!5004Q02qWhrN:ref

Ceyhun Özgöç

unread,
Dec 11, 2023, 4:32:15 AM12/11/23
to Interactive Media Ads SDK
Hi Jackson,

This is a breaking change for some of our customers as the skip() API is used to run end-to-end tests on their apps.

Can you let us know why this change was implemented? Is there a way to force the IMA SDK to not render a Skip button so that the skip() API can still be used, at least internally to run the said tests?

Kind regards,
Ceyhun

Andreas Kogler

unread,
Dec 11, 2023, 10:47:55 AM12/11/23
to Interactive Media Ads SDK
Hi Jackson,

we use AdsManager.skip() for automated testing and so do some of our customers. So same reason as outlined by Ceyhun in this thread.
Would also be interested in a workaround and the reason for disabling that functionality. Thanks!

Kind regards,
Andreas

IMA SDK

unread,
Dec 12, 2023, 12:06:08 PM12/12/23
to ima...@googlegroups.com
Hi all,

Thank you for the replies. I confirmed with the larger team, that the AdsManager.skip() call is not intended for use in automated testing.

Before IMA is released, we test the SDK's functionality, like skipping ads. If using AdsManager.skip() is part of a larger test for your implementation, you should mock IMA behavior, and not use the actual APIs. Alternatively, you can use UI testing to mock this at the click level, for clicking the 'Skip ad' button.

The use-case for disabling the 'Skip ads' button is part of an old beta for custom UI. As far as I know, the allow-list for this feature is closed, but you can reach out to your account representative for more information.

Please let me know if you have any additional questions.

Markus Daghall

unread,
Dec 13, 2023, 5:21:47 AM12/13/23
to Interactive Media Ads SDK
Hi all,

I do not see the benefits of this change. It is arbitrary and counter-intuitive to me.
Would it not be more logical to enable the function if the ad is skippable (which also shows the button)?
What is the intended use-case of this function? To skip non-skippable ads? Makes no sense to me. Or are there skippable ads that do not show the skip button? Why, if so?

We use the skip function extensively in our end-to-end tests to speed them up, since watching an entire ad is not necessary for our testing purposes, and a huge waste of time.

We have mitigated this change by emulating a click – as suggested – where the skip button (probably) is. 
This works for some of our developer, but not for everyone, in a headless puppeteer environment. The difference seems to be Operating System dependent.

I do not agree that using a mock is better than using the actual code that is run in a production environment, when running end-to-end tests.
We mock the ad server response to have a deterministic ad setup that it also 100 % configurable, to satisfy all our our test cases.


Testing aside, we use the skip function in our production code as well, as a mitigation of a side-effect of workaround (yeah...) for the confirmed feature that the ads are not scrollable on mobile devices.
When playing portrait video on a mobile device in portrait mode, the ads prevent the user from scrolling past the video, so we have made the video scrollable – using CSS – which unfortunately makes the skip-button non-clickable.
Therefore we add our own button that uses the API to skip the ad. This is a more serious issue for us, that actually harm our users.

IMA SDK

unread,
Dec 13, 2023, 11:33:45 AM12/13/23
to ima...@googlegroups.com
Hello Markus,

Thank you for the reply. The use of 'AdsManager.skip()' is exclusively for skippable ads, when the IMA ad UI (including the skip button) has been hidden. Disabling the IMA ad UI is part of an old beta for custom UI. As far as I know, the allow-list for this feature is closed, but you can reach out to your account representative for more information.

As for the production use-case. Would it be possible to share a sample app that can highlight the issue of the screen not being scrollable in portrait mode. Based on what your saying, the video would fill the entire phone screen, so there is no visible portion outside the video player. I don't think IMA necessarily supports an option to scroll by clicking the adDisplayContainer.

Alex

unread,
Dec 15, 2023, 11:45:26 AM12/15/23
to Interactive Media Ads SDK
Does this also apply to Android SDK? We are experiencing similar issue with AdsManager.skip() not working on Android.

среда, 13 декабря 2023 г. в 19:33:45 UTC+3, IMA SDK:

IMA SDK

unread,
Dec 15, 2023, 2:54:01 PM12/15/23
to aroch...@gmail.com, ima...@googlegroups.com
Hello Alex,

I checked the change, and yes this does apply to all IMA client-side SDKs. I apologize for not noting this previously.

Please let me know if you have any other questions.

Lukas Knoch-Girstmair

unread,
Dec 18, 2023, 4:08:31 AM12/18/23
to Interactive Media Ads SDK
Hi IMA team,

how should audio only ads without UI on mobile be skipped now? At the moment this is no longer possible as they do not have a UI and the `adsManager.skip` functionality does not work any more.

Also this change affects existing releases that are already deployed to production so a quick solution would be highly appreciated. 

IMA SDK

unread,
Dec 18, 2023, 5:22:10 PM12/18/23
to ima...@googlegroups.com
Hello Lukas,

Let me pass this use-case of skipping audio ads with audio only players that do no have a video UI for the skip button to render in.

That said, I am not sure if we support audio only skippable ads. For the ad tag you shared, it does not have the '<Linear skipoffset="00:00:05">' indication it is skippable.

Marko Kroflič

unread,
Dec 19, 2023, 10:19:59 AM12/19/23
to Interactive Media Ads SDK
Dear IMA :)

+1 for " this change affects existing releases that are already deployed to production so a quick solution would be highly appreciated."

We are serving a large number of catchup prerolls on our IPTV service (exoplayer with imasdk extensions) with custom branded UI and the update broke the SKIP functionality.

Thanks for checking this!

Kind regards,
Marko Kroflic, Telekom Slovenije

ponedeljek, 18. december 2023 ob 23:22:10 UTC+1 je oseba IMA SDK napisala:

IMA SDK

unread,
Dec 20, 2023, 3:36:24 PM12/20/23
to marko....@telekom.si, ima...@googlegroups.com
Hello Marko,

Thank you for the reply. My understanding is this change is unlikely to be rolled-back. IMA does not support custom UI elements, and if possible, you should use the IMA rendered skip button for skippable ads.

We are in the process of documenting this more clearly.

Please let me know if you have any additional questions.

Nitin Gupta

unread,
Dec 21, 2023, 3:40:12 AM12/21/23
to Interactive Media Ads SDK
Hi IMA Team,

We're writing to urgently report a critical issue impacting the user experience and monetization of our Flutter apps. Since the release of the IMA SDK version 3.607.0 on December 4th, the programmatic IMA ads skip functionality has completely stopped working. This significantly hurts user experience and directly affects our revenue stream as ads are our sole source of income.

We've been investigating solutions and identified a major roadblock: Flutter's limited options for displaying native video views.

  • PlatformView: While it allows displaying ads, it compromises various video player features and lacks full-screen capability.
  • TextureView: While enabling full-screen, it prevents gesture recognition at the platform level, disabling the IMA SDK's skip ad functionality.

We're effectively stuck, unable to provide a satisfactory user experience in production or implement proper ad skipping in new builds. This issue is extremely time-sensitive, as continued lack of ad revenue poses a serious threat to our business.

We urgently request your assistance in finding a solution for this critical problem. Any insights or suggestions regarding alternative approaches, potential workarounds, or known fixes for the IMA SDK would be greatly appreciated.

Thank you for your immediate attention to this matter.

Links to some of our Apps: https://play.google.com/store/apps/details?id=com.sportstoday&hl=en&gl=US

https://play.google.com/store/apps/details?id=com.thelallantop&hl=en&gl=US

Regards

Nitin

Head of Tech and Products, Digital

India Today Group

IMA SDK

unread,
Dec 21, 2023, 10:07:05 AM12/21/23
to nitin2...@gmail.com, ima...@googlegroups.com
Hello Nitin,

Thank you for reaching out. My recommendation would be allow IMA to render its own 'Skip ad' button, which is possible for typical Android and iOS IMA implementations. Programatic skipping of ads is not supported with the IMA SDK.

If your Flutter implementation prevents IMA from rendering its own skip button, my recommendation would be to exclude skippable ads from your apps. IMA does not provide its own Flutter plugin, so certain IMA functionality may be limited in custom Flutter implementations.

Harshit Verma

unread,
Dec 28, 2023, 3:38:33 AM12/28/23
to Interactive Media Ads SDK
Hi IMA team,

As the programmatic 'Skip Ad' functionality does not work anymore, we'd like to show only NON-SKIPPABLE video ads in our Flutter app.
How do we do that?
Any guide or link to a guide would help a lot.

Thanks and Regards,
Harshit
Flutter Developer, India Today Group

IMA SDK

unread,
Dec 28, 2023, 10:37:23 AM12/28/23
to harshitve...@gmail.com, ima...@googlegroups.com
Hello Harshit,

In order to exclude skippable ads from Google Ad Manager demand, you would add 'ad_type=standardvideo' to your VAST requests. See the ad tag parameter guide for more info.

The method for excluding skippable ads from other ad servers may differ.

Markus Daghall

unread,
Jan 2, 2024, 9:38:55 PMJan 2
to Interactive Media Ads SDK
Hi all,

Obviously, this is a problem for a lot of the users of the IMA SDK.

Please answer me: What is the actual rationale for not having this functionality?
In what way does it hurt Google to have it? Code complexity?

Your customers (who apparently aren't always right…) are suffering, but you insist on not rolling back this regression, that is hurting a lot of businesses all over the world.

Regardless if the exposure of the function was an accident, and that is was only meant for a select few, I – and the other people in this thread – really do not see anything good coming of this change.
Since the IMA-rendered UI is not working as we expect it, a lot of us need to skip ads programmatically in order for us to achieve the level of customer experience that are demanded of our products.

Just swallow your pride, acknowledge you made a tiny mistake, and bring it back to a lot of your customers' delight. Let's start 2024 with something positive!

Mihail Kudryavskyi

unread,
Jan 3, 2024, 9:29:02 AMJan 3
to Interactive Media Ads SDK
+ to Markus. Deprecating part of the functionality many clients worldwide use without prior notification does not look like a client-oriented approach. Now our option is either to show more unskippable ads and get complaints from our users or lose money. 

среда, 3 января 2024 г. в 02:38:55 UTC, Markus Daghall:

IMA SDK

unread,
Jan 3, 2024, 11:10:29 AMJan 3
to mihail.ku...@gmail.com, ima...@googlegroups.com
Hello Mihail and Markus,

Would you be able to share more information about your use-case where the IMA rendered UI is inadequate? I can share these concerns with the team to see if we can develop a fix or work-around. If there are issues, I would be very interested in helping get them fixed.

The .skip() had been being used to incorrectly programmatically skip ads, it was a mistake on our part to allow the API to function in all IMA integrations, and it was updated to prevent that misuse.

Harshit Verma

unread,
Jan 4, 2024, 8:55:55 AMJan 4
to Interactive Media Ads SDK
Hi IMA team,

As previously discussed, I have tried to add 'ad_type=standardvideo' to my VAST request, but still I'm having difficulties getting ads. Here is an example of what I did:
Thanks and Regards,
Harshit
Flutter Developer, India Today Group

Harshit Verma

unread,
Jan 4, 2024, 8:55:55 AMJan 4
to Interactive Media Ads SDK
Hi IMA Team,

How does one "incorrectly" skip ads? Since calling .skip() doesn't actually skip the ad unless the skippable timer is complete, that should not be possible, right?

IMA SDK

unread,
Jan 4, 2024, 3:56:14 PMJan 4
to harshitve...@gmail.com, ima...@googlegroups.com
Hello Harshit,

My understanding is .skip() was being called, not as a result of user interaction.

For the VAST URL you shared, when testing in the VSI player, I see VAST returned with .flv media, for which the player throws a 'AdError 400'. I do see that the VAST does not include any skippable ads, so 'ad_type=standardvideo' does seem to be working correctly.

IMA's sample ad tags are set up differently than production ad tags, since they have different goals. The sample ad tags are set up to always return the same ad, which is done with this inclusion '&cust_params=sample_ct%3Dlinear'. This is something specifically set up on the sample ad network to always return the exact same ad. In production environments, my understanding is you would want Ad Manager to select from a variety of ads for the same URL.

Please let me know if you have additional questions.

Harshit Verma

unread,
Jan 5, 2024, 1:00:26 AMJan 5
to Interactive Media Ads SDK
Hi IMA team,

Thanks for your response. The tag I have shared with you indeed does return AdError 400. The original tag that we use in our app, however returns a 'Ad error: AdError 303: No Ads VAST response after one or more Wrappers' when I add the 'ad_type=standardvideo' parameter.

I have tried it multiple times trying to change the parameter position as well, but it still does not work.
Please guide me in what I am doing wrong. 
Also, how do I share my VAST request with you securely so that the confidentiality of the same is not compromised and you are able to help me better?

Thanks and Regards,
Harshit Verma
Flutter Developer, India Today Group

IMA SDK

unread,
Jan 5, 2024, 12:25:28 PMJan 5
to harshitve...@gmail.com, ima...@googlegroups.com
Hello Harshit,

You can email me directly at js...@google.com to share the VAST URLs. I would also recommend checking with your Ad Manager account representative to make sure your account is correct set up with non-skippable inventory.
Reply all
Reply to author
Forward
0 new messages