/** * 當app進入後臺時調用 */- (void)applicationDidEnterBackground:(UIApplication *)application{ /** * app的狀態 * 1.死亡狀態:沒有打開app * 2.前臺運行狀態 * 3.後臺暫停狀態:停止一切動畫、定時器
/**
* 當app進入後臺時調用
*/
- (void)applicationDidEnterBackground:(UIApplication *)application
{
/**
* app的狀態
* 1.死亡狀態:沒有打開app
* 2.前臺運行狀態
* 3.後臺暫停狀態:停止一切動畫、定時器、多媒體、聯網操作,很難再作其他操作
* 4.後臺運行狀態
*/
// 向操作系統申請後臺運行的資格,能維持多久,是不確定的
UIBackgroundTaskIdentifier task = [application beginBackgroundTaskWithExpirationHandler:^{
// 當申請的後臺運行時間已經結束(過期),就會調用這個block
// 趕緊結束任務
[application endBackgroundTask:task];
}];
// 在Info.plist中設置後臺模式:Required background modes == App plays audio or streams audio/video using AirPlay
// 搞一個0kb的MP3文件,沒有聲音
// 迴圈播放
// 以前的後臺模式只有3種
// 保持網路連接
// 多媒體應用
// VOIP:網路電話
}
----------------------------------------------------------------------------------------------------
- (void)test {
// 獲得未讀數
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]; // 用 description 將 NSNumber 輕易轉為 字元串對象
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);
}];
}
----------------------------------------------------------------------------------------------------