You have declared
hasShownAdOneTime
as bool type, but have not set an initial value.
The line:
string adUnitId = adID;
is trying to address a local variable that only exists in the
showInterstitialAd
method, which incidentally contains a recursive loop.
You have also got declarations for
string adUnitId = adID;
in all three cases of your preprocessor
#IF
clauses; you should place a single copy outside the block, since it will always be generated.