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

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

相关文章

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库