您的位置:首页 > 移动开发 > IOS开发

iOS Local Notification学习笔记

2015-07-10 14:51 453 查看
在iOS4.0后Apple加入了Local Notification。这里是NSLocaleNotification的Class Reference http://developer.apple.com/library/ios/#documentation/iPhone/Reference/UILocalNotification_Class/Reference/Reference.html
如何注册一个Notification

[cpp] view
plaincopy

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

[cpp] view
plaincopy

NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];

for (UILocalNotification *notification in notifications ) {

if( [[notification.userInfo objectForKey:@"source"] isEqualToString:@"dailyReminder"] ) {

[[UIApplication sharedApplication] cancelLocalNotification:notification];

break;

}

}

撤销LocaleNotification

[cpp] view
plaincopy

[[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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: