Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"errorCode=1009, errorMessage=The response does not contain any valid ads" with vmap verified by Video Suite Inspector #4779

Closed
jazimm opened this issue Sep 5, 2018 · 16 comments
Assignees

Comments

@jazimm
Copy link

jazimm commented Sep 5, 2018

Issue description

Seeing error: "ImaAdsLoader: AdEvent: {type=adLoadError, errorCode=1009, errorMessage=The response does not contain any valid ads.}" when the post roll should be played.
I am loading a vmap file with pre roll and post roll video. The pre roll ad is displayed but the post roll video is not played after the content ends. Testing on version 2.8.4 using my own app and com.google.android.exoplayer2.imademo PlayerManager using both ImaAdsLoader passing in the vmap URL or ImaAdsLoader.Builder.buildForAdsResponse and passing the vmap string. I have tested the vmap file on Google's Video Suite Inspector at https://developers.google.com/interactive-media-ads/docs/sdks/html5/vastinspector and the post roll played as expected so not sure why it's not playing on the Exoplayer's IMA SDK?
bug report.docx

Reproduction steps

ImaAdsLoader.Builder builder = new ImaAdsLoader.Builder(mContext);
ImaAdsLoader imaAdsLoader = builder.buildForAdsResponse(vmap_XML);
AdsMediaSource adsMediaSource = new AdsMediaSource(mediaSource, mediaDataSourceFactory, imaAdsLoader, playerView);

Same result using ImaAdsLoader imaAdsLoader = new ImaAdsLoader(context, ad_URI) using the URI to the vmap rather than the actual vmap xml string.

Link to test content

Sending link and vmap xml to dev.exoplayer@gmail.com

Version of ExoPlayer being used

2.8.4

Device(s) and version(s) of Android being used

Nexus 5 running 6.0.1

A full bug report captured from the device

Bug report attached

@andrewlewis
Copy link
Collaborator

Could you try to reproduce this on the dev-v2 branch and let us know if it's still reproducible?

@jazimm
Copy link
Author

jazimm commented Sep 10, 2018

Hi Andrew, I have tested on dev-v2 and the behavior is the same. Not seeing the add and getting "com.google.android.exoplayer2.imademo I/ImaAdsLoader: AdEvent: {type=adLoadError, errorCode=1009, errorMessage=The response does not contain any valid ads.}" in the Logcat when the progress bar reaches the post roll ad. I have tested the vast tag again and it's still playing correctly in the Video Suite Inspector. Thanks

@andrewlewis
Copy link
Collaborator

I see the same behavior in the IMA SDK sample Android app, so I will ask the IMA team to take a look. Thanks for reporting!

@andrewlewis
Copy link
Collaborator

Apparently it's normal for the ad tag to be served differently on different platforms (Android vs. HTML5). Could you double-check your ad server configuration to make sure that it's not set up in a way that serves an empty XML file for the post-roll ad when receiving requests from Android?

@jazimm
Copy link
Author

jazimm commented Sep 11, 2018

Hi Android, I checked and it's set to serve the ad regardless of device type. Thanks

@andrewlewis
Copy link
Collaborator

I tested using the internal tip-of-tree IMA SDK and the postroll ad played, so I guess there was a bug that will be fixed in the next IMA SDK release.

@jazimm
Copy link
Author

jazimm commented Sep 12, 2018

Thanks Andrew. Any idea when that might be available?

@andrewlewis
Copy link
Collaborator

I checked in with the IMA team and they weren't aware of any recent changes that could affect this. They suggested checking whether the ad serving configuration changed.

There isn't much else I can do to investigate given that this isn't reproducible when building against sources for IMA internally. If something did indeed change in IMA's behavior it's likely this will just start working when the JavaScript portion of IMA gets updated (my understanding is that they release this every few weeks).

@jazimm
Copy link
Author

jazimm commented Sep 13, 2018

Thanks Andrew, I'm still not seeing a post roll ad so I will wait and try the next release when available.

@jazimm
Copy link
Author

jazimm commented Oct 4, 2018

Hi Andrew, I have upgraded to v 2.9.0. Now when I attempt to load a vmap file using ImaAdsLoader.Builder.buildForAdsResponse(vmap_XML), I receive the same error. If I use a test vmap from Google the ad works so I would assume the ad tag in the vmap is incorrect but if I pass the same ad tag url into the ImaAdsLoader as a parameter instead of using the builder, the ad plays correctly. It also plays on the Video Suite Inspector site. So I know the ad tag is good and I know the vmap is structured correctly as if I just change the ad tag to a test one from Google it plays. But for some reason it doesn't work when I attempt to load the vmap using the builder only. I need this functionality as I would like to add the mid and post roll ads to the vmap. Any ideas? Thanks

@andrewlewis
Copy link
Collaborator

If I understand correctly, your ad tag now plays as expected when loading via an ad tag URL, but when you pass the XML contents via buildForAdsResponse it does not play. Let me know if that's wrong.

The ad tag received via email doesn't look like I'd expect -- I think it's actually a Word document. Could you double check and email the actual VMAP XML file as a raw text file if needed?

I wonder whether the issue is that the XML passed to buildForAdsResponse refers to an external document that can't be loaded for some reason.

@jazimm
Copy link
Author

jazimm commented Oct 4, 2018

Hi Andrew, the ad tag plays if I remove it from the vast file and pass it via the ImaAdsLoader constructor the pre roll ad plays. If I instead use the vmap file and pass it as a string via ImaAdsLoader.Builder.buildForAdsResponse, it does not play. The one I emailed you was just saved via word. I am testing using a local xml file saved in resources. This file does work when I use a test ad tag from Google's IMA Sample Tags in the local vmap, but not when I use our own tag in the vmap. So basically the ad tag works when just passing the ad tag url in the ImaAdsLoader constructor but the same ad tag does not work when passed into a vmap in the ImaAdsLoader.Builder and I know this vmap xml is good because it works with Google's test tags. Thanks

@andrewlewis
Copy link
Collaborator

You have an ad tag that plays when loaded via URL but when passed to buildForAdsResponse it doesn't play correctly, right? If so, please send the ad tag XML document to dev.exoplayer@gmail.com (as a plain text document not a Word document -- I don't have a way to open the files emailed previously) and we'll take a look.

@jazimm
Copy link
Author

jazimm commented Oct 5, 2018

Yes that's right Android. I will send you the xml. Thanks.

@andrewlewis
Copy link
Collaborator

This is still reproducible on IMA SDK 3.10.2 unfortunately.

Testing using the ad tag provided via email, I found that the preroll ad did play correctly if I inlined the VAST response from the first ad break in a <vmap:VASTAdData> element, but it didn't play if I left the ad tag URI there. So I think something is stopping the IMA SDK from handling the expected ad response.

@jazimm It's difficult to debug this because I can't reproduce the problem when building internally against the debug version of IMA. Could you help diagnose what's going on by looking at the network traffic when loading the ad tag and checking whether the IMA SDK is requesting the ad break and receiving the expected response? Thanks.

@andrewlewis
Copy link
Collaborator

This seems to be fixed in IMA 3.10.6, testing using the development branch, so closing.

@google google locked and limited conversation to collaborators Aug 5, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants