1. 開啟timer60秒請求一次微博數據。
2. 將timer添加到runloop上,不論主線程是否正在其他事件,都要抽時間處理一下timer。
3. 微博未讀數:如果有未讀的微博條數,要設置提醒數字,如果未讀數為0,得清空提醒數字。
開發代碼:
- (void)viewDidLoad
{
// 獲得未讀數
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(setupUnreadCount) userInfo:nil repeats:YES];
// 主線程也會抽時間處理一下timer(不管主線程是否正在其他事件)
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
/**
*? 獲得未讀數
*/
- (void)setupUnreadCount
{
//? ? HWLog(@"setupUnreadCount");
//? ? return;
// 1.請求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 2.拼接請求參數
HWAccount *account = [HWAccountTool account];
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"access_token"] = account.access_token;
params[@"uid"] = account.uid;
// 3.發送請求
[mgr GET:@"https://rm.api.weibo.com/2/remind/unread_count.json" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) {
// 微博的未讀數
//? ? ? ? int status = [responseObject[@"status"] intValue];
// 設置提醒數字
//? ? ? ? self.tabBarItem.badgeValue = [NSString stringWithFormat:@"%d", status];
// @20 --> @"20"
// NSNumber --> NSString
// 設置提醒數字(微博的未讀數)
NSString *status = [responseObject[@"status"] description];
if ([status isEqualToString:@"0"]) { // 如果是0,得清空數字
self.tabBarItem.badgeValue = nil;
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
} else { // 非0情況
self.tabBarItem.badgeValue = status;
[UIApplication sharedApplication].applicationIconBadgeNumber = status.intValue;
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
HWLog(@"請求失敗-%@", error);
}];
}