I actually have a simple solution for this.
you start displaying the Ad
but you also insert a small button with a text inside it (lower Depth) , "Please Wait until the Ad is over to unlock this cool new feature" <<<--- Obviously write something smaller
once the Ad is done this button turns into an Active Button with a different Text " Click to Unlock" ... so this sounds pretty simple right ?
but then you say well.. what if the user will go out of the Ad or maybe go into the main Device Screen.. and will return later on...
well.. in order for the button to turn into an Active button which states Unlock is now "GOOD" , you have some options.
1. estimate time of an Ad ... I think the Ad services will tell you the Approx time of all ads that will be displayed... so you simply count a backwards timer with that "known approx " time and only when it reaches 0 you or less you will turn the button into an Unlock Button... but wait .. if the user moves away from the Ad .. you simply don't change the unlock button , so he will have to do it all over again .. don't forget to reset the timer.
2. check for pointer Clicked , cause some ads may ask you to touch it to run it .. so you check for that simple GetPointerPressed() after the Ad started , if yes... the timer start when the timer reaches 0 , again it will change into an unlock button.
3. Ask a Question about the Ad ?... well that's only if you know what Ad that was... and I guess you can use RenderToImage while the Ad is running to Check against a Known Image of an Ad if it matches.. then you know what Ad is being displayed.. (this is the hardest as it requires Visual Analytics)
I think the most simple yet accurate solution for this is option 1 and 2 combined.