Describe the bug
On iOS with googima, a FreeWheel VMAP tag (resp=vmap1) configured as a schedule break tag correctly substitutes [GOOGLE_INSTREAM_VIDEO_NONCE] into givn (confirmed in Charles). When looking in Charles I can see FreeWheel returns HTTP 200 with a valid VMAP 1.0 document. But in the Xcode console I see this error Ad Error [1009]: The response does not contain any valid ads.
The same FreeWheel VMAP + googima setup works on Android (nonce substitutes, preroll plays). Failure is iOS-specific.
This is not a FreeWheel no-fill and not a missing nonce, iOS is rendering a playable VMAP response when the URL is supplied via the schedule tag path.
To Reproduce
Set advertising: { client: 'googima' }.
Use a FreeWheel-style tag with resp=vmap1 and literal givn=[GOOGLE_INSTREAM_VIDEO_NONCE]
Attach it to the playlist item as a schedule break tag, e.g.:
adschedule: {
adBreak1: {
offset: 'pre',
ad: { source: 'googima', tag: '<freewheel-vmap-url>' },
},
}
(Android uses the equivalent googima + VMAP tag wiring that succeeds in our app.)
Start playback on iOS.
In Charles/Proxyman: confirm outbound request has a real givn= (substitution works).
Confirm response is VMAP 1.0 + inline VAST 3.0 + at least one video/mp4 MediaFile.
Observe player/Xcode: Ad Error 1009.
Expected behavior
iOS should behave like Android: with googima and a FreeWheel resp=vmap1 tag, after nonce substitution and a valid VMAP/VAST/MP4 response, the preroll should play without error 1009.
Desktop (please complete the following information):
Response structure:
<vmap:VMAP xmlns:vmap="http://www.iab.net/vmap-1.0" version="1.0">
<vmap:AdBreak breakType="linear" timeOffset="start">
<vmap:AdSource>
<vmap:VASTAdData>
<VAST version="3.0">
<Ad>
<InLine>
<AdSystem>FreeWheel</AdSystem>
<Creatives>
<Creative>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile type="video/mp4" delivery="progressive"
width="1280" height="720">
<![CDATA[ https://cdn.example.com/creative.mp4 ]]>
</MediaFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>
</vmap:VASTAdData>
</vmap:AdSource>
</vmap:AdBreak>
</vmap:VMAP>
iOS player: JWPlayerKit Ad Error [1009]: The response does not contain any valid ads.
Android: same response shape plays successfully.
react-native: 0.81.6
@jwplayer/jwplayer-react-native: 1.6.0
iOS pods: JWPlayerKit 4.26.2, GoogleAds-IMA-iOS-SDK 3.22.1
ℹ️ While Issues are valuable for open-source collaboration, a JWP request ensures that you will receive clear timelines and efficient support. |
Describe the bug
On iOS with googima, a FreeWheel VMAP tag (resp=vmap1) configured as a schedule break tag correctly substitutes [GOOGLE_INSTREAM_VIDEO_NONCE] into givn (confirmed in Charles). When looking in Charles I can see FreeWheel returns HTTP 200 with a valid VMAP 1.0 document. But in the Xcode console I see this error
Ad Error [1009]: The response does not contain any valid ads.The same FreeWheel VMAP + googima setup works on Android (nonce substitutes, preroll plays). Failure is iOS-specific.
This is not a FreeWheel no-fill and not a missing nonce, iOS is rendering a playable VMAP response when the URL is supplied via the schedule tag path.
To Reproduce
Set advertising: { client: 'googima' }.
Use a FreeWheel-style tag with resp=vmap1 and literal givn=[GOOGLE_INSTREAM_VIDEO_NONCE]
Attach it to the playlist item as a schedule break tag, e.g.:
(Android uses the equivalent googima + VMAP tag wiring that succeeds in our app.)
Start playback on iOS.
In Charles/Proxyman: confirm outbound request has a real givn= (substitution works).
Confirm response is VMAP 1.0 + inline VAST 3.0 + at least one video/mp4 MediaFile.
Observe player/Xcode: Ad Error 1009.
Expected behavior
iOS should behave like Android: with googima and a FreeWheel resp=vmap1 tag, after nonce substitution and a valid VMAP/VAST/MP4 response, the preroll should play without error 1009.
Desktop (please complete the following information):
Response structure:
iOS player: JWPlayerKit Ad Error [1009]: The response does not contain any valid ads.
Android: same response shape plays successfully.
react-native: 0.81.6
@jwplayer/jwplayer-react-native: 1.6.0
iOS pods: JWPlayerKit 4.26.2, GoogleAds-IMA-iOS-SDK 3.22.1
Issuesare valuable for open-source collaboration, a JWP request ensures that you will receive clear timelines and efficient support.