Facebook Instant "Reward not completed" error doesn't show on device

The callback for fbinstant.show_rewarded_video() returns success true and error nil even if the ad has been interrupted by the player.

In a browser it works fine, and shows this in the console:

Game_wasm.js:1 FBInstant_PlatformShowRewardedVideoAsync - error: Reward not completed

Is this a bug, or is there another way of knowing whether the ad has been successfully viewed to the end?

I use this code to determine whether the ad has been shown successfully:

function M.show_rewarded_video_ad( cb )

	if M.rewarded_video_ad_is_loaded then

		local function on_show_rewarded_video( self,success,error )
			
			M.rewarded_video_ad_is_loaded = false
			local actual_success = success and not error
			cb( actual_success )

		end
		
		fbinstant.show_rewarded_video(M.rewarded_ad_id, on_show_rewarded_video)

	end
	
end

No idea to be honest. The official API for an ad instance only mentions four outcomes: ADS_NOT_LOADED, INVALID_PARAM, NETWORK_FAILURE, INVALID_OPERATION. None of them seem to indicate if the ad was shown to the end or not. I’d probably ask in the Instant Games developer group on Facebook.

It actually looks to be a bug on Facebook’s side.

Out of curiosity I skipped an ad on one of the currently most promoted Facebook Instant game. Sure enough, the reward is rewarded even if you skip the ad. Defold appears out of the loop!

1 Like