flutter如何实现一个应用位于前台时全局页面每隔三分钟弹出一次一天最多弹出5次的GroMore半插屏广告,处于付费页和后台时停止

1,首先添加一个全局的生命周期监听类

class AppLifecycleObserver with WidgetsBindingObserver {bool IsCold = false;bool isAgree = false;void getIsCold() async {isAgree = await SPManager().getBool(SPKeys.isAgreePrivacy, defaultValue: true);IsCold = await SPManager().getBool("isCold", defaultValue: false);}Future<bool> getIsVipPay() async {return await SPManager().getBool('isVipPay', defaultValue: false);}@overridevoid didChangeAppLifecycleState(AppLifecycleState state) {super.didChangeAppLifecycleState(state);getIsCold();if(!isAgree) {if (state == AppLifecycleState.resumed) {if (!IsCold) {//热启动开屏广告IdcardAndroid().showSplashAd(AdsConfig.splashId);SPManager().setBool("isCold", true);} else {SPManager().setBool("isCold", AdsConfig.isPayBack? true: false);}SPManager().getBool(SPKeys.isShowPayPage, defaultValue: false).then((value) => {if (value){//满足条件开始计时GlobalAdsTimer.showScreenAds()}});}}if (state == AppLifecycleState.paused){//退入后台时停止广告计时GlobalAdsTimer.stop();} else if (state == AppLifecycleState.detached) {}}}

在main()入口绑定 就可以监测到了 全局的生命周期

`WidgetsBinding.instance.addObserver(AppLifecycleObserver());

2,定义一个全局的计时器 GlobalAdsTimer()

class GlobalAdsTimer {static Timer? timerHalfScreen;//展示广告static void start() {timerHalfScreen?.cancel();timerHalfScreen = null;timerHalfScreen = Timer.periodic(const Duration(minutes: 3), (timer) {showTodayHalfScreenVideo();setRealSystemUIOverlayStyle = true;addTodayHalfScreenNumVideo();timerHalfScreen?.cancel();timerHalfScreen = null;GroMoreManager().showInterstitialAd((b){//如果当前有前一个插屏广告未关闭就不继续请求if (b){showScreenAds();}});});}//展示条件static void showScreenAds() {print('GlobalAdsTimer_showScreenAds');GroMoreManager().isShowHomeInterstitialAd().then((value) => {if (value) {getShowTodayHalfScreenVideo().then((value) => {if (value) {clearTodayHalfScreenNumVideo(0),},getShowTodayHalfScreenNumVideo().then((int num) => {if (num < 5) {start(),} else {timerHalfScreen?.cancel(),timerHalfScreen = null,}})})}});}// 停止广告 应用退入后台/进入通用付费页/引导付费页 停止计时static void stop() {print('GlobalAdsTimer_stop');timerHalfScreen?.cancel();}

3,当进入特殊页面禁止弹出插屏广告,例如付费页禁止弹出影响用户付费率时
VipPage

 @overridevoid initState() {super.initState();//停止计时GlobalAdsTimer.stop();  }

页面销毁时开始

 @overridevoid dispose() {super.dispose();GlobalAdsTimer.showScreenAds();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MQ的延迟队列

1&#xff0c;场景 1.定时发布文章 2.秒杀之后&#xff0c;给30分钟时间进行支付&#xff0c;如果30分钟后&#xff0c;没有支付&#xff0c;订单取消。 3.预约餐厅&#xff0c;提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间&#xff1a; 7*30 * 60 * …

Linux_Debian学习笔记

文章目录 系统管理软件源Debian11debian11 ustc中国科技大学软件源debian11 清华大学软件源debian11 阿里云软件源 Debian12debian12 清华大学软件源 系统全局设置debian12 修改静态IP地址修改语言环境成中文 系统输入法Debian11 fcxe 安装rime中州韵五笔输入法 常用软件安装Do…

Python操作SQLite数据库

SQLite 是一种轻量级的数据库引擎&#xff0c;广泛用于嵌入式设备和小型应用程序。在Python中&#xff0c;SQLite 是一个流行的选择&#xff0c;因为它易于使用、快速、可靠&#xff0c;并且无需独立的服务器进程。本文将深入探讨如何使用 Python 操作 SQLite 数据库&#xff0…

Excel·VBA考勤打卡记录整理

看到一个帖子《excel吧-考勤一天四次打卡&#xff0c;快速找出缺卡》&#xff0c;每个人每天有4次打卡记录&#xff0c;需要整理出所有缺少的打卡记录 与之前的文章《ExcelVBA考勤打卡记录统计结果》结果形式类似 与之前的文章《ExcelVBA考勤打卡记录数据整理》查找上下班打卡…

Linux、Docker、Brew、Nginx常用命令

Linux、Docker、Brew、Nginx常用命令 Linuxvi编辑器文件操作文件夹操作磁盘操作 DockerBrewNginx参考 Linux vi编辑器 Vi有三种模式。命令模式、输入模式、尾行模式&#xff0c;简单的关系如下&#xff1a; i -- 切换到输入模式&#xff0c;在光标当前位置开始输入文本。&a…

【go从入门到精通】初识struct结构体

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

Flutter中工厂方法的多种实现方法与使用场景分析

在Flutter应用程序的开发中&#xff0c;使用工厂方法是一种常见的设计模式&#xff0c;它可以帮助我们更好地组织和管理代码&#xff0c;提高代码的可读性和可维护性。本文将介绍Flutter中工厂方法的多种实现方法&#xff0c;并分析其在不同场景下的使用情况。 什么是工厂方法…

虚拟网络设备性能优化

在现代网络架构中&#xff0c;虚拟网络设备扮演着越来越重要的角色&#x1f310;&#xff0c;特别是在云计算☁️和容器化技术&#x1f4e6;广泛应用的背景下。虚拟网络设备如虚拟以太网设备&#xff08;veth&#xff09;、虚拟交换机&#xff08;vSwitch&#xff09;、和虚拟路…

【阅读笔记】《同意》

未成年幼女与男恋童癖的故事 作者: [法]瓦内莎斯普林格拉 翻译&#xff1a;李溪月 kindle看的电子书 笔记 传记形式的书。作者记录了14岁时与一个50岁的恋童癖患者进行第一次性行为的经历以及前后的故事。 恋童癖被作者命名为“G”&#xff0c;作者自称“M”&#xff0c;G是…

适用于 Mac 的 10 大数据恢复工具,具有优点、缺点

数据丢失很常见&#xff0c;并且可能由于许多不同的原因而发生。这种情况在我和我们团队的其他成员身上发生过很多次&#xff0c;即使我们格外小心我们的个人存储设备。 幸运的是&#xff0c;数据恢复软件在大多数情况下都可以工作。但是&#xff0c;由于数据丢失场景彼此之间…

arcgis10.x创建镶嵌数据集

在ArcGIS中创建新的镶嵌数据集的步骤如下&#xff1a;打开ArcGIS软件&#xff0c;并在工具箱中选择“Data Management Tools.tbx”→“Raster”→“Mosaic Dataset”→“Create Mosaic Dataset”。在弹出的窗口中&#xff0c;配置镶嵌数据集的地理数据库位置、名称和坐标系…

centos7 安装 rabbitmq3.8.5

1.首先安装 erlang 环境&#xff1a; curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash sudo yum install erlang-21.3.8.14-1.el7.x86_64 yum install socat -y 2.安装 rabbitmq https://github.com/rabbitmq/rabbitmq-s…

STM32学习和实践笔记(7):改变系统时钟的实验

今天完成了这个改变系统时钟的实验。实验是成功的。 #include "stm32f10x.h" #include "led.h"void delay(u32 i) {while(i--); }void RCC_HSE_Config(u32 div,u32 pllm) //自定义系统时间&#xff08;可以修改时钟&#xff09; {RCC_DeInit(); //将外设R…

【CKA模拟题】边车容器Shared-Volume的具体用法

Useful Resources: Persistent Volumes Claim , Pod to Use a PV 题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetes An existing nginx pod, my-pod-cka and Persistent Volume Claim…

2024年注册安全工程师考试真题及答案1

一、选择题 31.2019年12月10日&#xff0c;某热力公司供热锅炉发生故障。故障抢修过程中&#xff0c;发现锅炉房桥式起重机主钩抱闸故障&#xff0c;存在溜钩现象。由于起重设备厂家人员不能及时到场&#xff0c;工作负责人急于恢复供热&#xff0c;安排检修工甲站在桥式起重机…

macOS制作C/C++ app

C/C制作macOS .app 一、 .app APP其实是一个文件夹结构&#xff0c;只不过mac的界面中让它看起来像一个单独的文件。 在shell终端或者右键查看包结构即可看到APP的目录结构。 通常的app目录结构如下&#xff1a; _CodeSignature, CodeResources 一般为Mac APP Store上架程序…

【aws】在DBeaver上用终端节点连接Redshift

碎碎念 最近想要尝试redshift的一个叫做重新定位的功能&#xff0c;重新定位触发之后会停止当前的集群&#xff0c;转而在同一个区域的另一个可用区中启动一个一样的集群&#xff0c;这个过程视情况会花上10到60分钟不等。 但是目前项目中连接到redshift用的是私有ip&#xf…

保研线性代数复习4

一.范数&#xff08;Norms&#xff09; 1.什么是范数&#xff1f; 范数是一个向量空间V的函数&#xff0c;每一个属于向量空间V的向量x都匹配了一个实数&#xff08;它的长度&#xff09;&#xff1a; 2.范数的性质&#xff1f; 齐次性&#xff1a; 正定性&#xff1a; 三…

大创项目推荐 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

webrtc m98编译问题记录

webrtc m98编译问题 执行命令 gn gen --targetx64 --idevs2019 --args"is_debugtrue rtc_enable_protobuffalse is_clangfalse target_cpu\"x64\" enable_iterator_debuggingtrue use_custom_libcxxfalse symbol_level0 rtc_include_testsfalse" out/d…