AppDelegate.m
- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification*)notification{
// 如果应用程序在前台,将应用程序图标上红色徽标中数字设为0
application.applicationIconBadgeNumber = 0;
// 使用UIAlertView显示本地通知的信息
[[[UIAlertView alloc] initWithTitle:@"收到通知"
message:notification.alertBody
delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil] show];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// 应用程序再次进入前台时,将应用程序徽标设置0
application.applicationIconBadgeNumber = 0;
}
Main.storyboard
![](https://img.haomeiwen.com/i8632804/af80eaa499692be5.png)
ViewController.m
定义成员变量
{
UIApplication *app;
}
- (void)viewDidLoad
{
[super viewDidLoad];
app = [UIApplication sharedApplication];
}
控件的点击事件方法
- (IBAction)changed:(id)sender;
实现控件的方法
- (IBAction)changed:(id)sender
{
UISwitch* sw = (UISwitch*) sender;
if (sw.on)
{
//判断当前的sdk是否可以调用registerUserNotificationSettings方法
//
if([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)])
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
// 创建一个本地通知
UILocalNotification *notification = [[UILocalNotification alloc]init];
// 设置通知的触发时间
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
// 设置通知的时区
notification.timeZone = [NSTimeZone defaultTimeZone];
// 设置通知的重复发送的事件间隔
notification.repeatInterval = kCFCalendarUnitMinute;
// 设置通知的声音
notification.soundName = @"gu.mp3";
//通知标题
notification.alertTitle=@"标题标题标题";
// 设置通知内容
notification.alertBody = @"亲,好久不见,甚是想念!";
// 设置显示在应用程序上红色徽标中的数字
notification.applicationIconBadgeNumber = 1;
// 设置userinfo,用于携带额外的附加信息。
NSDictionary *info = @{@"ly": @"key"};
notification.userInfo = info;
// 调度通知
[app scheduleLocalNotification:notification]; // ①
}
else
{
// 获取所有处于调度中本地通知数组
NSArray *localArray = [app scheduledLocalNotifications];
if (localArray)
{
for (UILocalNotification *noti in localArray)
{
NSDictionary *dict = noti.userInfo;
if (dict)
{
// 如果找到要取消的通知
NSString *inKey = [dict objectForKey:@"ly"];
if ([inKey isEqualToString:@"key"])
{
// 取消调度该通知
[app cancelLocalNotification:noti]; // ②
}
}
}
}
}
}
网友评论