AppDelegate.m
-------------------
@implementation AppDelegate
//只有當(dāng)應(yīng)用在前臺(tái)時(shí),該方法才會(huì)被調(diào)用
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
//如果應(yīng)用程序在前臺(tái),將應(yīng)用程序圖標(biāo)上紅色數(shù)字設(shè)為0
application.applicationIconBadgeNumber = 0;
//使用UIAlertView顯示本地通知的信息
[[[UIAlertView alloc]initWithTitle:@"收到通知" message:notification.alertBody delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil] show];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}
-----------------------------------
#import "ViewController.h"
@interface ViewController ()
{
UIApplication *app;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
app = [UIApplication sharedApplication];
}
- (IBAction)changed:(id)sender{
UISwitch *sw = (UISwitch *)sender;
if (sw.on) {
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
//創(chuàng)建一個(gè)本地通知
UILocalNotification *notification = [[UILocalNotification alloc]init];
//設(shè)置通知的觸發(fā)時(shí)間
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:20];
//設(shè)置通知的時(shí)區(qū)
notification.timeZone = [NSTimeZone defaultTimeZone];
//設(shè)置通知的重復(fù)發(fā)送的時(shí)間間隔
notification.repeatInterval = kCFCalendarUnitMinute;
//設(shè)置通知的聲音
notification.soundName = @"";
//通知標(biāo)題
notification.alertTitle=@"啦啦啦";
// 設(shè)置當(dāng)設(shè)備處于鎖屏狀態(tài)時(shí),顯示通知的警告框下方的title
notification.alertAction = @"OPEN";
// 設(shè)置通知是否可顯示Action
notification.hasAction = YES;
// 設(shè)置通過(guò)通知加載應(yīng)用時(shí)顯示的圖片
notification.alertLaunchImage = @"";
// 設(shè)置通知內(nèi)容
notification.alertBody = @"主人,妞妞想你了!";
// 設(shè)置顯示在應(yīng)用程序上紅色徽標(biāo)中的數(shù)字
notification.applicationIconBadgeNumber = 1;
// 設(shè)置userinfo,用于攜帶額外的附加信息。
NSDictionary *info = @{@"bys": @"key"};
notification.userInfo = info;
// 調(diào)度通知
[app scheduleLocalNotification:notification];? // ①
}
else
{
// 獲取所有處于調(diào)度中本地通知數(shù)組
NSArray *localArray = [app scheduledLocalNotifications];
if (localArray)
{
for (UILocalNotification *noti in localArray)
{
NSDictionary *dict = noti.userInfo;
if (dict)
{
// 如果找到要取消的通知
NSString *inKey = [dict objectForKey:@"bys"];
if ([inKey isEqualToString:@"key"])
{
// 取消調(diào)度該通知
[app cancelLocalNotification:noti];? // ②
}
}
}
}
}
}