新浪微博客户端(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) {

    }];

}

最终效果:

时间: 2024-10-13 18:51:27

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

新浪微博客户端(60)-离线缓存微博数据

很多应用在第一次加载时会读取前一次浏览的历史微博数据,只有当用户手动触发下拉刷新之后,才会去加载新的微博数据. 1.集成FMDB FMDB是在sqlite3的C语言查询函数基础上封装的一套OC的API,因此在使用之前需要首先导入libsqlite3.tbd. 2. 添加FMDB库 3. 参考代码: DJStatusDBHelper.h #import <Foundation/Foundation.h> @class DJStatus; @interface DJStatusDBHelper :

新浪微博客户端(25)-添加转发微博

DJStatusCell.m /* 转发微博部分 */ /** 转发微博整体 */ @property (nonatomic,weak) UIView *retweetView; /** 转发微博内容 */ @property (nonatomic,weak) UILabel *retweetContentLabel; /** 转发微博图片 */ @property (nonatomic,weak) UIImageView *retweetPhotoView; #pragma mark - 转发

iOS微博项目(五)- 实现超链接和时间,下拉,未读数,微博正文,评论

1. 正则表达式的使用 2. 实现超链接和时间,来源 3 下拉 1)baseTableView,用于下拉等 2)weiboTableView 多个地方都可以用到这个list 3)重构微博列表 4)下拉刷新和控制器的通信 5)下拉实现 6)显示未读数 7)加载提示 3. 显示微博正文 1)显示评论, 一开始一直不出来,调试了两天哎,后来发现是xib中有无关的label,删掉就好了... 2)显示评论数,开始评论数的section一直覆盖到了评论上面,后来发现是现在应该用 - (double) ta

Android新浪微博客户端(六)——Home界面的ListView

原文出自:方杰|http://fangjie.sinaapp.com/?p=184转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.首先是ListView的adapter. 因为微博列表的Item不是规则的,比如说有些微博有转发子微博,有些没有,有些有图片,有些没有图片,所以说很不固定.这里就采用BaseAdapter,要自

新浪微博客户端项目之项目主体结构详解

程序的运行流程: IWeiboActivity接口: 1.  init()方法 完成初始化 2,  refresh(Objet ...args)方法 完成窗体刷新 Task任务类: 定义程序中的任务 如:登录,发表新微博,获取用户微博,获取用户详细信息等各种任务 int taskId//当前任务的ID Map params //当前任务的参数 MainService(核心控制类) 1. MainService的主要功能 完成程序调度 接收UI层数据(任务),完成业务逻辑,返回信息,更新UI 在后

Android新浪微博客户端(七)——ListView中的图片异步加载、缓存

原文出自:方杰|http://fangjie.sinaapp.com/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.ListView的图片异步加载 我们都知道对每一个Weibo Item都有用户头像,而且每一条微博还可能带有图片.如果在加载列表的同时加载图片,这样有几个缺点,第一很费事,界面卡住,用户体验很不

android开发新浪微博客户端 完整攻略 [新手必读]

开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就打算开发个android版本的新浪微博客户端作为练手项目,并且以随笔的方式详细的记录开发的全过程.本人对java语言以及eclipse Ide都是初次应用基本上属于边学边用,做移动设备上的东西也是第一次,总的来说属于无基础.无经验.无天赋的纯三无人员,还请广大同学们多多给予指点. 开发第一件事情,那

Android新浪微博客户端(五)——主界面的TabHost和WeiboUtil

原文出自:方杰|http://fangjie.sinaapp.com/?p=183转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.TabHost的实现 之前的一篇文章讲的就是TabHost,但是那个是用Fragment实现TabHost,这里我就尝试用另一种方式,继承TabActivity的方式实现TabHost. Ma

Android新浪微博客户端(四)——添加多个账户及认证

原文出自:方杰| http://fangjie.sinaapp.com/?p=75 转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 二.获取用户信息并保存数据库 上面说到加载AuthActivity有两种情况,其中一种就是授权成功回调,在授权回调成功后我们就开始通过微博API获取用户信息了,然后保存数据库了.这一系列操作我采