底部按钮和应用图标显示未读消息

2024-01-31 10:38

本文主要是介绍底部按钮和应用图标显示未读消息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们要实现的效果如下:

 

我们使用系统自带的,实际上,代码量很少,在我们要显示的按钮上,打上下面一句代码即可:

1
self .tabBarItem.badgeValue = @ "1" ;

 同时设置图标和按钮的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
  *  获得未读数
  */
- ( void )setupUnreadCount
{
     //获取未读数具体方法
     //最终返回一个数字,如:
     int  count=10;
     
     // 设置提醒数字(微博的未读数)
     NSString  *status = [ NSString  stringWithFormat:@ "%d" , count];
     if  ([status isEqualToString:@ "0" ]) {  // 如果是0,得清空数字
         self .tabBarItem.badgeValue =  nil ;<br>      //应用图标显示
         [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
     else  // 非0情况
         self .tabBarItem.badgeValue = status;
         [UIApplication sharedApplication].applicationIconBadgeNumber = status.intValue;
     }
}

当然,设置的显示的这个数字,是应该会定时的变的。如何使这个方法定时的调用呢?

1
2
3
4
5
6
7
8
9
- ( void )viewDidLoad
{
     [ super  viewDidLoad];
     
     // 获得未读数
     NSTimer  *timer = [ NSTimer  scheduledTimerWithTimeInterval:60 target: self  selector: @selector (setupUnreadCount) userInfo: nil  repeats: YES ];
     // 主线程也会抽时间处理一下timer(不管主线程是否正在其他事件)
     [[ NSRunLoop  mainRunLoop] addTimer:timer forMode: NSRunLoopCommonModes ];
}

做完上面的操作后,我们是可以看到效果了。但还存在一个问题就是,我们的应用进入后台后,定时器不再工作,变成了一个暂时状态。那为什么一个音乐的应用可以一直在后台运行呢?实际上,在AppDelegate里面已经有后台运行的方法,我们在这个方法里做一些操作即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
  *  当app进入后台时调用
  */
- ( void )applicationDidEnterBackground:(UIApplication *)application
{
     /**
      *  app的状态
      *  1.死亡状态:没有打开app
      *  2.前台运行状态
      *  3.后台暂停状态:停止一切动画、定时器、多媒体、联网操作,很难再作其他操作
      *  4.后台运行状态
      */
     // 向操作系统申请后台运行的资格,能维持多久,是不确定的
     UIBackgroundTaskIdentifier task = [application beginBackgroundTaskWithExpirationHandler:^{
         // 当申请的后台运行时间已经结束(过期),就会调用这个block
         
         // 赶紧结束任务
         [application endBackgroundTask:task];
     }];
     
     // 在Info.plst中设置后台模式:Required background modes == App plays audio or streams audio/video using AirPlay
     // 搞一个0kb的MP3文件,没有声音
     // 循环播放
     
     // 以前的后台模式只有3种
     // 保持网络连接
     // 多媒体应用
     // VOIP:网络电话
}

 在上面的代码里,我们看到,需要在Info.plst中设置后台模式:Required background modes == App plays audio or streams audio/video using AirPlay,如图:

这篇关于底部按钮和应用图标显示未读消息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663479

相关文章

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr