在iOS4.0后Apple加入了Local Notification。这里是NSLocaleNotification的Class Reference http://developer.apple.com/library/ios/#documentation/iPhone/Reference/UILocalNotification_Class/Reference/Reference.html
如何注册一个Notification
- UILocalNotification *localNotification = [[UILocalNotification alloc] init];
- // 设置notification的属性
- localNotification.fireDate = [startTimePicker.picker.date dateByAddingTimeInterval:36000]; //出发时间
- localNotification.alertBody = @"Time To Schedule Our Service"; // 消息内容
- localNotification.repeatInterval = NSSecondCalendarUnit; // 重复的时间间隔
- localNotification.soundName = UILocalNotificationDefaultSoundName; // 触发消息时播放的声音
- localNotification.applicationIconBadgeNumber = 1; //应用程序Badge数目
- //设置随Notification传递的参数
- NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"reminder", @"notificationId", @"phone", txtPhone.text, nil];
- localNotification.userInfo = infoDict;
- [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; //注册
- [localNotification release]; //释放
遍历已经注册的所有LocaleNotification
- NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];
- for (UILocalNotification *notification in notifications ) {
- if( [[notification.userInfo objectForKey:@"source"] isEqualToString:@"dailyReminder"] ) {
- [[UIApplication sharedApplication] cancelLocalNotification:notification];
- break;
- }
- }
撤销LocaleNotification
- [[UIApplication sharedApplication] cancelAllLocalNotifications]; // 撤销所有的Notification
- <pre name="code" class="cpp">[[UIApplication sharedApplication] cancelLocalNotification:notification]; // 撤销某个Notificiation,若要删除某个特定的Notification,则可以在UserInfo中加入标记,遍历所有的Notification来删除。</pre>
- <pre></pre>
- <p></p>
- <pre></pre>
- <strong></strong>
- <p></p>
- <p></p>
- <p><strong>响应事件</strong></p>
- <p>当Notification被触发后,你的应用需要对此作出反应。应用此时可能会处于以下几个状态:</p>
- <ul>
- <li>在前台运行 - 当应用在前台运行时,则ApplicationDelegate的didReceiveLocalNotification会被调用。<pre name="code" class="cpp">- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
- NSLog(@"Notification Body: %@", notification.alertBody);
- NSLog(@"%@", notification.userInfo);
- application.applicationIconBadgeNumber = notification.applicationIconBadgeNumber-1;
- }</pre><br>
- </li><li>在后台运行 - 用户可以看到类似Push Notification的提醒,若用户选择查看提醒详情,则应用通过 ApplicationDelegate的didFinishLaunchingWithOptions进入<br>
- <pre name="code" class="cpp">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- UILocalNotification *localNotification =
- [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
- if (localNotification) {
- NSLog(@"Notification Body: %@",localNotification.alertBody);
- NSLog(@"%@", localNotification.userInfo);
- application.applicationIconBadgeNumber = localNotification.applicationIconBadgeNumber-1;
- }
- // set up everything else
- return YES;
- </pre>}<br>
- </li></ul>
- <div style="padding-top:20px">
- <p style="font-size:12px;">版权声明:本文为博主原创文章,未经博主允许不得转载。</p>
- </div>