googleads-mobile-flutter: [Interstitial] Ad not closed on back button : blocking point for playstore production !

Plugin Version

google_mobile_ads: ^0.12.1+1

Steps to Reproduce

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

  @override
  Widget build(BuildContext context) {
    return InterstitielPage(
      enabled: true,
      child: Scaffold(
        appBar: AppBar(),
        body: Center(child: Text("This ads will not be closed when back button id pressed (we need to spam it)"),),
      ),
    );
  }
}
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

class InterstitielPage extends StatefulWidget {
  final Widget child;
  final bool enabled;

  const InterstitielPage({Key key, this.child, this.enabled = true}) : super(key: key);

  @override
  _InterstitielPageState createState() => _InterstitielPageState();
}

class _InterstitielPageState extends State<InterstitielPage> {
  InterstitialAd interstitialAd;

  @override
  void dispose() {
    interstitialAd?.dispose();
    super.dispose();
  }

  @override
  void initState() {
    if (widget.enabled) WidgetsBinding.instance.addPostFrameCallback((_) => getAd());
    super.initState();
  }

  bool get isReady => mounted && WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed;

  getAd() {
    if (!isReady) return null;
    interstitialAd = InterstitialAd(
      adUnitId: "ca-app-pub-3940256099942544/1033173712",
      listener: AdListener(
        onAdLoaded: (Ad ad) {
          if (isReady) interstitialAd.show();
        },
        onAdClosed: (Ad ad) {
          ad.dispose();
          print('Ad closed.');
        },
        onAdFailedToLoad: (Ad ad, error) {
          ad.dispose();
          print('Ad failed to load: $error');
        },
        onApplicationExit: (Ad ad) => print('Left application.'),
      ),
      request: AdRequest(),
    );
    if (isReady) interstitialAd?.load();
    setState(() {});
  }

  @override
  Widget build(BuildContext context) => widget.child;
}

Expected results:

When i press the back button I would see the interstitial closed. Because of that, PlayStore refuse to publish my app :

Your app is not compliant with the Ad Fraud policy. Ad fraud is strictly prohibited. Ads should not appear after the user has exited the app, or after the user has pressed the back button to exit the app

Not that some of my apps were accepted to production but got the error, maybe next release they will be blocked ! The log & video to well understand the issue.

Actual results:

It persist but disappear after around 10-20 try… Maybe about a timer…

Logs
[   +8 ms] I/Ads     ( 3992): Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("2E9CBE21F7A722_CENSORED_ID_FOR_GUTHUB_ISSUE")) to get test ads on this device.
[  +23 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[   +1 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->allocateInstance(Ljava/lang/Class;)Ljava/lang/Object; (greylist, linking, allowed)
[   +6 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->peekLong(JZ)J (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->pokeLong(JJZ)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->pokeInt(JIZ)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->peekInt(JZ)I (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->pokeByte(JB)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->peekByte(J)B (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->pokeByteArray(J[BII)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Llibcore/io/Memory;->peekByteArray(J[BII)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->arrayBaseOffset(Ljava/lang/Class;)I (greylist,core-platform-api, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->arrayIndexScale(Ljava/lang/Class;)I (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden field Ljava/nio/Buffer;->address:J (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, reflection, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, reflection, allowed)
[  +12 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
[   +5 ms] I/DynamiteModule( 3992): Considering local module com.google.android.gms.ads.dynamite:0 and remote module com.google.android.gms.ads.dynamite:210890500
[        ] I/DynamiteModule( 3992): Selected remote version of com.google.android.gms.ads.dynamite, version >= 210890500
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[   +9 ms] I/DynamiteModule( 3992): Considering local module com.google.android.gms.ads.dynamite:0 and remote module com.google.android.gms.ads.dynamite:210890500
[        ] W/Parcel  ( 3992): **** enforceInterface() expected 'com.google.android.gms.ads.clearcut.IClearcut' but read 'com.google.android.gms.gass.internal.clearcut.IClearcut'
[        ] I/DynamiteModule( 3992): Selected remote version of com.google.android.gms.ads.dynamite, version >= 210890500
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[   +2 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
[        ] W/Parcel  ( 3992): **** enforceInterface() expected 'com.google.android.gms.ads.clearcut.IClearcut' but read 'com.google.android.gms.gass.internal.clearcut.IClearcut'
[   +1 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
[        ] I/DynamiteModule( 3992): Considering local module com.google.android.gms.ads.dynamite:0 and remote module com.google.android.gms.ads.dynamite:210890500
[        ] I/DynamiteModule( 3992): Selected remote version of com.google.android.gms.ads.dynamite, version >= 210890500
[  +15 ms] W/tal.my_app_censored_name( 3992): ClassLoaderContext classpath element mismatch. expected=/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk, found=/data/app/com.eg_digital.my_app_censored_names-9j_X88jfmQkXURtSx6kFJA==/base.apk (PCL[];PCL[/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk*856532249:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes2.dex*333229941:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes3.dex*264764970:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes4.dex*12996791:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes5.dex*449296825:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes6.dex*1160111402:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes7.dex*312131232:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.apk!classes8.dex*2800897254:/data/app/com.eg_digital.my_app_censored_names-LJJZ0itP-Vkbpspd0yiobw==/base.
[  +11 ms] W/tal.my_app_censored_name( 3992): Found duplicate classes, falling back to extracting from APK : /data/user/0/com.eg_digital.my_app_censored_names/app_pccache/5/7145086C2DF9AD170940815BEFAA500FA517C4D3/pcam.jar
[        ] W/tal.my_app_censored_name( 3992): NOTE: This wastes RAM and hurts startup performance.
[        ] W/tal.my_app_censored_name( 3992): Found duplicated class when checking oat files: 'Lcom/google/errorprone/annotations/CanIgnoreReturnValue;' in /data/app/com.eg_digital.my_app_censored_names-9j_X88jfmQkXURtSx6kFJA==/base.apk!classes3.dex and /data/user/0/com.eg_digital.my_app_censored_names/app_pccache/5/7145086C2DF9AD170940815BEFAA500FA517C4D3/pcam.jar
[        ] W/tal.my_app_censored_name( 3992): 
[        ] I/AudioManager( 3992): In isSpeakerphoneOn(), calling application: com.eg_digital.my_app_censored_names
[   +3 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[        ] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[  +21 ms] W/AdWorker(Defaul( 3992): type=1400 audit(0.0:11298): avc: granted { execute } for path="/data/data/com.eg_digital.my_app_censored_names/app_pccache/5/7145086C2DF9AD170940815BEFAA500FA517C4D3/pcam.jar" dev="sda32" ino=2050239 scontext=u:r:untrusted_app:s0:c192,c257,c512,c768 tcontext=u:object_r:app_data_file:s0:c192,c257,c512,c768 tclass=file
[   +4 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +44 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[  +16 ms] W/Ads     ( 3992): Not retrying to fetch app settings
[ +590 ms] D/EgretLoader( 3992): EgretLoader(Context context)
[        ] D/EgretLoader( 3992): The context is not activity
[  +11 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[   +7 ms] D/EgretLoader( 3992): EgretLoader(Context context)
[        ] D/EgretLoader( 3992): The context is not activity
[ +119 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +36 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[  +25 ms] I/tal.my_app_censored_name( 3992): Background concurrent copying GC freed 73449(5345KB) AllocSpace objects, 32(1200KB) LOS objects, 49% free, 6688KB/13MB, paused 2.398ms total 149.740ms
[  +19 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
[ +130 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
[   +1 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +15 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +40 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[  +76 ms] I/DynamiteModule( 3992): Considering local module com.google.android.gms.ads.dynamite:0 and remote module com.google.android.gms.ads.dynamite:210890500
[        ] I/DynamiteModule( 3992): Selected remote version of com.google.android.gms.ads.dynamite, version >= 210890500
[   +6 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[  +15 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +24 ms] I/Timeline( 3992): Timeline: Activity_launch_request time:9577764
[  +27 ms] I/WonderPush.IAM.Headless( 3992): Removing display event component
[   +3 ms] W/ActivityThread( 3992): handleWindowVisibility: no activity for token android.os.BinderProxy@c73f4d5
[  +16 ms] D/DynamitePackage( 3992): Instantiating com.google.android.gms.ads.ChimeraAdOverlayCreatorImpl
[   +5 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[        ] D/ForceDarkHelper( 3992): updateByCheckExcludeList: pkg: com.eg_digital.my_app_censored_names activity: com.google.android.gms.ads.AdActivity@31cd5b6
[   +5 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +8 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[        ] D/ForceDarkHelper( 3992): updateByCheckExcludeList: pkg: com.eg_digital.my_app_censored_names activity: com.google.android.gms.ads.AdActivity@31cd5b6
[        ] D/ForceDarkHelper( 3992): updateByCheckExcludeList: pkg: com.eg_digital.my_app_censored_names activity: com.google.android.gms.ads.AdActivity@31cd5b6
[  +22 ms] I/chatty  ( 3992): uid=10448(com.eg_digital.my_app_censored_names) identical 2 lines
[   +4 ms] D/ForceDarkHelper( 3992): updateByCheckExcludeList: pkg: com.eg_digital.my_app_censored_names activity: com.google.android.gms.ads.AdActivity@31cd5b6
[        ] I/WonderPush.IAM.Headless( 3992): Setting display event component
[   +6 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +32 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +18 ms] W/ContentCatcher( 3992): Failed to notify a WebView
[        ] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +3 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +49 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +141 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
[        ] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[  +19 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[        ] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +1 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +256 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +2 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[   +1 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +1 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +256 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[        ] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +193 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +2 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +208 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +5 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +235 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9579292, downTime=9579292, deviceId=-1, source=0x101, displayId=-1 }
[   +1 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9579292, downTime=9579292, deviceId=-1, source=0x101, displayId=-1 }
[ +189 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +2 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +350 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9579836, downTime=9579836, deviceId=-1, source=0x101, displayId=-1 }
[   +3 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9579836, downTime=9579836, deviceId=-1, source=0x101, displayId=-1 }
[ +465 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +2 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[+1613 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +6 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[+1773 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9583694, downTime=9583694, deviceId=-1, source=0x101, displayId=-1 }
[        ] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9583694, downTime=9583694, deviceId=-1, source=0x101, displayId=-1 }
[ +280 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
[   +4 ms] W/tal.my_app_censored_name( 3992): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
[ +283 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9584267, downTime=9584267, deviceId=-1, source=0x101, displayId=-1 }
[   +3 ms] D/ViewRootImpl( 3992): [TouchInput][ViewRootImpl] KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=9584267, downTime=9584267, deviceId=-1, source=0x101, displayId=-1 }
[+1782 ms] D/AudioManager( 3992): getStreamVolume isRestricted mode = 0
No issue.
[√] Flutter (Channel stable, 2.0.6, on Microsoft Windows [version 10.0.19042.964], locale fr-FR)
    • Flutter version 2.0.6 at C:\Users\censored_for_github_issue\Documents\Softwares\flutter
    • Framework revision 1d9032c7e1 (5 days ago), 2021-04-29 17:37:58 -0700
    • Engine revision 05e680e202
    • Dart version 2.12.3

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at D:\Android\Sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: C:\Users\censored_for_github_issue\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\201.7199119\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.9.0)
    • Visual Studio at D:\dev
    • Visual Studio Community 2019 version 16.9.31025.194
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 4.1.0)
    • Android Studio at C:\Users\censored_for_github_issue\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\201.7199119
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] IntelliJ IDEA Ultimate Edition (version 2021.1)
    • IntelliJ at C:\Users\censored_for_github_issue\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\211.7142.45
    • Flutter plugin version 56.0.5
    • Dart plugin version 211.7233

[√] Connected device (4 available)
    • Mi 9T (mobile)    • c8d2a7bf • android-arm64  • Android 10 (API 29)
    • Windows (desktop) • windows  • windows-x64    • Microsoft Windows [version 10.0.19042.964]
    • Chrome (web)      • chrome   • web-javascript • Google Chrome 90.0.4430.93
    • Edge (web)        • edge     • web-javascript • Microsoft Edge 89.0.774.77

• No issues found!

https://user-images.githubusercontent.com/37028599/117120537-bbf31580-ad93-11eb-81f3-b295d29a014b.mp4

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 22

Most upvoted comments

@EArminjon I believe the issue you are having is not that the app doesn’t close with the back button, but that InterstitialAd.show() is being called after a user has exited an app. A user can close the Ad by clicking the ‘x’ button at the top.

I believe this is related to following best practices in https://support.google.com/admob/answer/6201362?hl=en. The InterstitialAd should only be showed when a user is transitioning between pages.

Ok but still pretty weird… you can see the code above of the guy who opened this issue. he has the logic you’re speaking about but still getting rejected… how do you explain it?

onAdLoaded: (Ad ad) {
  print(identical(interstitialAd, ad));
},
$> true

It’s seems be the same object.

I’m getting also this rejection with this message. but after I’ve checked multiple apps, of native android, i can tell you the back button is not an issue with the library, its just how it works

only god knows what they want… so many tickets, so many likes but they are still ignoring it…