I am asking for a best practice or implementation.
My app's core function providing service for a long time (2 to 4 hours). The users have some active time and when they use the service, the active time is consumed. The user can restore the active time by watching a rewarded video AD of AdMob.
The problem is, some of the users (less than 3%) cannot see any ADs on their device. I got many complaints that they cannot load the ADs. Most of the users not seeing ADs are using an AD-blocker, but some are under "AD-no fill" status (error code 3). In this case, it seems my app generates too many AD-requests (by users clicking "watch AD"), so AdMob cannot always fill the ADs. My app lets an user to watch ADs less than 10 times a day.
I have some plans and would like to know which one is better:
1) Include another AD-provider. When the AD of AdMob is not filled, my app loads another AD. Drawback: 2x code complexity and 2x maintenance effort.
2) When the real AD is not filled, load an test-AD of AdMob. Drawback: no money
3) When an AD is not filled, load another AD unit of AdMob. Drawback: I am not sure if this works. The AdMob should have determined the user (not AD-unit) is not getting an AD on this request, so generating another request doesn't help. And based on this AdMob loading multiple rewarded videos discussion, it is not allowed to load multiple AD-units.
4) The others I didn't come up with.
5) Is 10 times of watching rewarded-AD too many?