当前位置: 首页 > news >正文

新浪微博客户端(21)-获取当前微博未读数并提示用户

 

HomeViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];

    // 初始化NavigationItem
    [self initNavigationItem];
    // 初始化TitleView
    [self initTitleView];
    // 更新TitleView 显示名称
    [self updateTitleViewDisplayName];
    // 集成下拉刷新控件
    [self setupPullToRefreshView];
    // 授权显示通知
    [self requestDisplayBadge];
    
    // 获取微博未读数
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(setupUnReadCount) userInfo:nil repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    
}



/** iOS8中如果想要设置ApplicationIconBadgeNumber,需要用户授权 */
- (void)requestDisplayBadge {
    
    float version = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (version >= 8.0) {
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    }
    
}



/** 清空所有通知提示 */
- (void)clearAllBadgeTips {
    self.tabBarItem.badgeValue = nil;
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;

}



/** 每隔5秒向新浪发送一次请求,获取当前微博未读数量 */
- (void)setupUnReadCount {

    AFHTTPSessionManager *requestManager = [AFHTTPSessionManager manager];
    
    NSString *urlString = @"https://rm.api.weibo.com/2/remind/unread_count.json";
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    DJAccount *account = [DJAccountTool account];
    params[@"access_token"] = account.access_token;
    params[@"uid"] = account.uid;
    
    [requestManager GET:urlString parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary *  _Nullable responseObject) {
        NSString *unReadCount = [responseObject[@"status"] description];
        if ([unReadCount isEqualToString:@"0"]) { // 没有未读的微博数据
            [self clearAllBadgeTips];
        } else { // 有未读的微博数据
            self.tabBarItem.badgeValue = unReadCount;
            [UIApplication sharedApplication].applicationIconBadgeNumber = [unReadCount intValue];
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];
    
}

最终效果:

 

相关文章:

  • Distributed Configuration Management Platform(分布式配置管理平台)
  • centos系统的时间时区和MySQL的时间时区问题
  • java架构师之路:推荐的15本书
  • 学习python cgi的一点心得体会
  • Linux用户管理 (3)
  • linux下cat命令详解
  • “达观杯”文本分类挑战赛新手入门代码
  • Maven类包冲突终极解决方案
  • CDIF: 基于REST和JSON的SOA软件框架
  • 步步为营 .NET 设计模式学习笔记 二十四、Factory Method(工厂方法模式)
  • 杉杉股份聘方正科技前副总任伟泉掌帅印
  • npm安装任何包报错,解决方法:
  • Windows 7快速定位照片方法
  • Calendar类,运用Calendar类打印日历
  • 禁止浏览器自动保存密码弹框
  • 分享的文章《人生如棋》
  • angular2 简述
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • js中的正则表达式入门
  • linux学习笔记
  • Redis字符串类型内部编码剖析
  • Ruby 2.x 源代码分析:扩展 概述
  • socket.io+express实现聊天室的思考(三)
  • SpiderData 2019年2月16日 DApp数据排行榜
  • spring-boot List转Page
  • Vue2.x学习三:事件处理生命周期钩子
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 好的网址,关于.net 4.0 ,vs 2010
  • 计算机在识别图像时“看到”了什么?
  • 思否第一天
  • 无服务器化是企业 IT 架构的未来吗?
  • 小李飞刀:SQL题目刷起来!
  • #NOIP 2014# day.1 T2 联合权值
  • #QT(一种朴素的计算器实现方法)
  • #Ubuntu(修改root信息)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)ORM
  • (转)负载均衡,回话保持,cookie
  • .form文件_SSM框架文件上传篇
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET程序员迈向卓越的必由之路
  • .net访问oracle数据库性能问题
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BUUCTF 2018]Online Tool
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C\C++]读入优化【技巧】
  • [C++]类和对象【上篇】