ratson / cordova-plugin-admob-free

New development has been moved to "admob-plus-cordova", https://github.com/admob-plus/admob-plus/tree/master/packages/cordova
https://github.com/admob-plus/admob-plus
MIT License
499 stars 214 forks source link

WARNING - Google Rejeited Apps - Developer Program Policies violation - #387

Open 123dma opened 4 years ago

123dma commented 4 years ago

Rejeiction cause: Disruptive Ads Description: The user attempts to exit the app and navigate to the home screen, but instead, the expected flow is interrupted by an ad.

Hello Friends, the case is serious and affects this and other plugins, Google is rejecting apps for the reason above.

After much study I found that this issue occurs in all apps using this and other plugins. You need to create in the plugin a way to destroy the instance after this "admob.interstitial.prepare (); when the user clicks the onpause and return navigation buttons before the interstitial is called. Test and see what I'm talking about. The interstitial is shown outside the App and Google is rejecting and deleting these Apps.

Obs.:I subscribed to the pause and others events but it was not enough to solve the problem.

Obs.:I To facilitate testing put an alert after admob.interstitial.prepare (); click on alert then quickly on the navigation menu onpause

This is my code. 
          var inteShow = false;
            var appIsReady = true;

            document.addEventListener("pause", onPause, false);
            document.addEventListener("resume", onResume, false);
            document.addEventListener("backbutton", onBackKeyDown, false);

  admob.interstitial.config({
                id: '******************',
                isTesting: true,
                autoShow: false,
            });

            admob.interstitial.prepare();

            document.addEventListener("admob.interstitial.events.LOAD", onInterstitialReceive);
            document.addEventListener("admob.interstitial.events.CLOSE", onInterstitialClose);
            document.addEventListener("admob.interstitial.events.LOAD_FAIL", onInterstitialFail);

 function onInterstitialClose(message) {
              ....
            }

            function onInterstitialReceive(message) {

                if (appIsReady) {
                    try {
                        admob.interstitial.show();
                        ....
                    } catch (e) {

                    }

                }

            }

            function onInterstitialFail(message) {
                if (!network) {
                     ....
                }
            }

            function onPause() {
                appIsReady = false;
            }
            function onResume() {
                appIsReady = true;
            }

            function onBackKeyDown() {
               appIsReady = false;

            }
ahmetakin commented 4 years ago

did you solve this problem because I have same issue with google developer policy ?