iOS开发--底部按钮和应用图标显示未读消息
我们要实现的效果如下:


我们使用系统自带的,实际上,代码量很少,在我们要显示的按钮上,打上下面一句代码即可:
self.tabBarItem.badgeValue = @"1";
同时设置图标和按钮的代码:
/**
* 获得未读数
*/
- (void)setupUnreadCount
{
//获取未读数具体方法
//最终返回一个数字,如:
int count=10; // 设置提醒数字(微博的未读数)
NSString *status = [NSString stringWithFormat:@"%d", count];
if ([status isEqualToString:@"0"]) { // 如果是0,得清空数字
self.tabBarItem.badgeValue = nil;
//应用图标显示
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
} else { // 非0情况
self.tabBarItem.badgeValue = status;
[UIApplication sharedApplication].applicationIconBadgeNumber = status.intValue;
}
}
当然,设置的显示的这个数字,是应该会定时的变的。如何使这个方法定时的调用呢?
- (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里面已经有后台运行的方法,我们在这个方法里做一些操作即可。
/**
* 当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,如图:

最后搞一个0kb的MP3,没有声音的,循环播放即可。
iOS开发--底部按钮和应用图标显示未读消息的更多相关文章
- 【Python学习笔记】-APP图标显示未读消息数目
以小米手机系统为例,当安装的某个APP有未读消息时,就会在该APP图标的右上角显示未读消息的数目.本文主要解说怎样用Python语言实现图标显示未读消息的数目.首先,还是要用到Python中PIL库, ...
- [iOS微博项目 - 3.6] - 获取未读消息
github: https://github.com/hellovoidworld/HVWWeibo A.获取登陆用户未读消息 1.需求 获取所有未读消息,包括新微博.私信.@.转发.关注等 把未 ...
- Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒
http://www.51itong.net/android-badgenumber-9789.html Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒 ...
- 桌面图标未读消息(小米,sony,三星手机)
新消息来了,在桌面的Laucher图标上显示新消息数 /** * 应用桌面图标未读消息显示工具类 * 只支持 小米,三星和索尼 */ public class BadgeUtil { final st ...
- iOS 未读消息角标 仿QQ拖拽 简单灵活 支持xib(源码)
一.效果 二.简单用法 超级简单,2行代码集成:xib可0代码集成,只需拖一个view关联LFBadge类即可 //一般view上加角标 _badge1 = [[LFBadge alloc] init ...
- Android实现小圆点显示未读功能
代码地址如下:http://www.demodashi.com/demo/13541.html 前言 以前我们实现这个功能都是用 BadgeView.java,大体就是将这个java类复制到自己的项目 ...
- [分享]IOS开发-简单实现搜索框显示历史记录的本地缓存及搜索历史每次只能获取到一个的解决方案
注:原文:http://www.zhimengzhe.com/IOSkaifa/40433.html 1.首先,我们需要对进行过搜索的textField的输入内容进行一个NSUserDefaults的 ...
- IOS开发-UIBarButtonItem系统自带图标总结
1.这四个返回的是后面的单词. UIBarButtonSystemItemDone UIBarButtonSystemItemCancel UIBarButtonSystemItemEdit UIBa ...
- iOS开发之如何在Xcode中显示断点堆栈
昨天有人问我在Xcode中打断点后怎么查看堆栈,今天就简单的聊聊. 首先解释一下,什么是堆栈? 堆:顺序随意:栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式 ...
随机推荐
- LeetCode 17 Letter Combinations of a Phone Number (电话号码字符组合)
题目链接 https://leetcode.com/problems/letter-combinations-of-a-phone-number/?tab=Description HashMap< ...
- magent实现memcached集群的一个问题
之前我们小组封装了一个memcached类库,里面有一个名为RemoveStartWith的方法可以根据起始字符串删除所有节点中负责键值规则的缓存项.它实现的原理就是通过stats命令获取每个节点的所 ...
- WCF错误"The maximum message size quota for incoming messages (65536) has been exceeded."
错误原因有三:超过最大接受的传输值 1.webconfig或者 app.config 文件中的binding 节点进行 配置 maxBufferSize="2147483647" ...
- 【CF913G】Power Substring 数论+原根
[CF913G]Power Substring 题意:T组询问,每次给定一个数a,让你求一个k,满足$2^k$的10进制的后$min(100,length(k))$位包含a作为它的子串.你只需要输出一 ...
- Gradle gitignore Gradle 模式 上传SVN 要忽略的文件
.gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures /.idea *. ...
- python3+socket搭建简易服务器
踩了一上午的坑之后,终于对网络编程有了一点大致的.基本的了解.真的是0基础,之前对socket网络编程一点都不知道.(感觉自己与时代脱轨....) 首先我想对这些美妙的专业术语进行一番搜索: 服务器: ...
- Elasticsearch 自定义映射
尽管在很多情况下基本域数据类型 已经够用,但你经常需要为单独域自定义映射 ,特别是字符串域.自定义映射允许你执行下面的操作: 全文字符串域和精确值字符串域的区别 使用特定语言分析器 优化域以适应部分匹 ...
- dataframe转换为多维矩阵,然后可以使用values来实现
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(3,3),columns=list('abc'),ind ...
- [LintCode] Invert Binary Tree 翻转二叉树
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- PHP 使用header函数设置HTTP头的示例方法 表头 (xlsx下载)
转载 http://justcoding.iteye.com/blog/601117/ //定义编码header( 'Content-Type:text/html;charset=utf-8 '); ...