在iOS中有兩類資訊提示推送方式,一類是遠程伺服器推送(APNS),之前有筆記中介紹過APNS:http://blog.csdn.net/tangren03/article/details/8482259,還有一類就是本地通知UILocalNotification,今天就簡要的記錄一下UILocalNotification的使用,代碼裡見注釋
UILocalNotification *notification = [[UILocalNotification alloc] init]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm:ss"]; //觸發通知的時間 NSDate *now = [formatter dateFromString:@"15:00:00"]; notification.fireDate = now; //時區 notification.timeZone = [NSTimeZone defaultTimeZone]; //通知重複提示的單位,可以是天、周、月 notification.repeatInterval = NSDayCalendarUnit; //通知內容 notification.alertBody = @"這是一個新的通知"; //通知被觸發時播放的聲音 notification.soundName = UILocalNotificationDefaultSoundName; //執行通知註冊 [[UIApplication sharedApplication] scheduleLocalNotification:notification];
以上代碼實現了這麼一個情境:一些Todo和鬧鐘類應用都有通知使用者的功能,使用的就是iOS中的本地通知UILocalNotification,還有些應用會在每天、每周、每月固定時間提示使用者回到應用看看,也是用的本地通知,以上程式碼片段就是實現了在每天的下午3點彈出通知提示。
如果要在通知中攜帶參數資訊,可以使用下面的方式:
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"]; notification.userInfo = dic;
如果軟體是在運行中,則可以通過AppDelegate中的回調方法擷取並處理參數資訊:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{ if (notification) { NSDictionary *userInfo = notification.userInfo; NSString *obj = [userInfo objectForKey:@"key"]; NSLog(@"%@",obj); }}
另外,可以通過兩種方式取消註冊的本地通知,一種是取消指定的通知,第二種是取消所有的註冊通知:
[[UIApplication sharedApplication] cancelLocalNotification:localNotification]; [[UIApplication sharedApplication] cancelAllLocalNotification];
以上就簡要介紹了一下UILocalNotification的使用,歡迎大家指正和補充!
加入我們的QQ群或公眾帳號請查看:Ryan's
zone公眾帳號及QQ群
同時歡迎關注我的新浪微博和我交流:@唐韌_Ryan