Реклама, связанная с вашим приложением, не должна мешать работе других приложений, рекламы или работе устройства, включая системные кнопки или кнопки и порты устройства. Сюда входят оверлеи, сопутствующие объявления и рекламные блоки с виджетами. Объявления должны отображаться только в приложении, которое их обслуживает. приложение неактивно или находиться на переднем плане или даже после закрытия приложения кнопкой назад, не завершается.
Итак, я искал чтобы узнать, как прослушивать эти события при флаттере, и я нашел didChangeAppLifecycleState
, но я не мог понять, как реализовать его с моей рекламой !!
Вот мой код: (не реализовал дерево виджетов здесь, как я думаю, не важно)
AdmobInterstitial interstitialAd;
dynamic _state;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
interstitialAd = AdmobInterstitial(
adUnitId: 'xxxxxxxxxxxxxx',
listener: (AdmobAdEvent event, Map<String, dynamic> args) {
if (event == AdmobAdEvent.loaded) interstitialAd.show();
if (event == AdmobAdEvent.closed) interstitialAd.dispose();
if (event == AdmobAdEvent.failedToLoad) {
print("Error code: ${args['errorCode']}");
}
},
);
interstitialAd.load();
}
@override
void dispose() {
interstitialAd.dispose();
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
setState(() {
_state = state;
});
switch(state){
case AppLifecycleState.paused:
print('paused state');
break;
case AppLifecycleState.resumed:
print('resumed state');
break;
case AppLifecycleState.inactive:
print('inactive state');
break;
default:
break;
}
}