我们要实现的效果如下:

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

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,没有声音的,循环播放即可。

转载于:https://www.cnblogs.com/jys509/p/4509207.html

iOS开发--底部按钮和应用图标显示未读消息相关推荐

  1. android底部导航栏带消息数的框架,GitHub - BarkSheep/Android-NavMenuLayout: 一个底部导航栏, 实现了显示未读消息数, 显示红点等效果的封装...

    Android-NavMenu-master 一个底部导航栏, 实现了显示未读消息数, 显示红点等效果的封装. 添加依赖 1. 在项目根目录的 build.gradle 中添加 allprojects ...

  2. 图标显示未读消息数量

    最近做的项目,要求图标的右上角能显示未读消息的数量,也就像微信的未读消息一样的效果. 没有做过,之前一直这样的效果好是申请,怎么图标的右上角会出现一个圆圈,然后圆圈里面有数字呢. 只有经历,才能懂得. ...

  3. Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51082574 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  4. Android app图标显示未读消息数

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51082574 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  5. android图标未读消息,Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示...

    原理 添加角标的原理就是发送一个Broadcast(广播),在广播的Intent中指定需要被添加角标的应用的packageName(包名),className(类名),count(角标数目).当然了, ...

  6. Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示

    http://www.51itong.net/android-badgenumber-9789.html

  7. Android 桌面图标右上角显示未读消息数字

    背景: 在Android原生系统中,众所周知不支持桌面图标显示未读消息提醒的数字,虽然第三方控件BadgeView可以实现应用内的数字提醒.但对于系统的图标,特别是app的logo图标很难实现数字标志 ...

  8. android 应用图标 角标 显示未读消息

    Android桌面角标的适配确实是非常坑爹的需求.原生系统根本就没有这个功能,国内很多厂家效仿ios都自己定义了该功能.Android程序员就很苦逼,要适配很多机型.建议万不得已情况下还是不要进行这项 ...

  9. 微信小程序定时器获取消息并在tabber按钮显示未读消息

    微信小程序定时器获取消息并在tabber按钮显示未读消息 onShow() {let that = this;this.getUserToken();wxService.setPageTitle(&q ...

最新文章

  1. Nginx与Lua利用fpm打成rpm包
  2. 收藏 | CNN的一些可视化方法!
  3. 高斯混合模型的解释及Python实现
  4. [云炬python3玩转机器学习]4-3 训练数据集,测试数据集
  5. 四、数据挖掘中常见的挖掘模式
  6. [转] 使用Docker容器,这些错误千万别犯
  7. sess.run接收返回值得变量和sess.run函数內的tensor型变量命名注意不能一致,影响迭代,产生报错:Can not convert a ndarray into a Tensor
  8. 【渝粤教育】电大中专电子商务网站建设与维护 (7)作业 题库
  9. (八)cmockery中的calculator和run_tests函数的注释代码
  10. JAVA进阶day07JNI(java调用c)A部分
  11. 6月份Github上最热门的Java开源项目!
  12. 在vue 中使用Stylus
  13. PHP之JWT接口鉴权(二) 自定义错误异常
  14. 最短路:dijkstra算法
  15. php对视频分割,如何把一个视频无损分割成多个视频片段(最好是质量和格式无变化)...
  16. Vue结合vant框架实现通讯录a-z排序
  17. 【JAVA长虹键法】第七式 建造者模式(23种设计模式)
  18. WM_INITDIALOG与WM_CREATE消息的区别
  19. iOS开发技术-实验一-简易计算器实现
  20. 【科研技巧】Mac下使用SciDavis绘制科研论文图教程(安装及使用)

热门文章

  1. java中的函数指的是,函数式接口在Java中是指有且仅有一个抽象方法的接口。( )...
  2. cp复制多个文件到指定目录
  3. height、clientHeight、scrollHeight、offsetHeight区别
  4. mybatis-generator
  5. simpana oracle,华为认证云运维专家(HCIE-CDO)
  6. git的创建分支与合并分支(5)
  7. Python入门--字典元素的遍历for-in
  8. JQueryDOM之创建节点
  9. react 对象渲染_不要过度使用React.useCallback()
  10. Unity3D基础38:角色控制器组件