Locale Notification 作法

剛剛熊熊發現永恆戰士跟Agent Dash都有local Notification,找了一下原理跟作法,
發現他真是個不可多得的好物阿!
跟remote push 結合在一起,可以一直提醒使用者"快來用我  快來用我",
再進化下去,可以在收到推撥的時候放一段2秒的音樂

以下code全部來自這邊
http://blog.csdn.net/alexjames_83/article/details/7481750


註冊一個Notification
  1. UILocalNotification *localNotification = [[UILocalNotification alloc] init];  
  2.   
  3. // 設置notification的屬性  
  4. localNotification.fireDate = [startTimePicker.picker.date dateByAddingTimeInterval:36000]; //出發時間  
  5. localNotification.alertBody = @"Time To Schedule Our Service"// 消息內容  
  6. localNotification.repeatInterval = NSSecondCalendarUnit; // 重複的時間間隔  
  7. localNotification.soundName = UILocalNotificationDefaultSoundName; // 觸發消息時播放的聲音  
  8. localNotification.applicationIconBadgeNumber = 1; //應用程序Badge數目  
  9.   
  10. //設置隨Notification傳遞的參數  
  11. NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"reminder", @"notificationId", @"phone", txtPhone.text, nil];  
  12. localNotification.userInfo = infoDict;  
  13.       
  14. [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; //註冊  
  15. [localNotification release]; //釋放  

遍歷已經註冊的所有LocaleNotification
  1.     NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];  
  2.     for (UILocalNotification *notification in notifications ) {  
  3.         if( [[notification.userInfo objectForKey:@"source"] isEqualToString:@"dailyReminder"] ) {  
  4.             [[UIApplication sharedApplication] cancelLocalNotification:notification];  
  5.             break;  
  6.         }  
  7.     }  
撤銷LocaleNotification
  1. [[UIApplication sharedApplication] cancelAllLocalNotifications]; // 撤銷所有的Notification  
  2. <pre name="code" class="cpp">[[UIApplication sharedApplication] cancelLocalNotification:notification]; // 撤銷某個Notificiation,若要刪除某個特定的Notification,則可以在UserInfo中加入標記,遍歷所有的Notification來刪除。</pre>  
  3. <pre></pre>  
  4. <p></p>  
  5. <pre></pre>  
  6. <strong></strong>  
  7. <p></p>  
  8. <p></p>  
  9. <p><strong>響應事件</strong></p>  
  10. <p>當Notification被觸發後,你的應用需要對此作出反應。應用此時可能會處於以下幾個狀態:</p>  
  11. <ul>  
  12. <li>在前台運行 - 當應用在前台運行時,則ApplicationDelegate的didReceiveLocalNotification會被調用。<pre name="code" class="cpp">- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {  
  13.     NSLog(@"Notification Body: %@", notification.alertBody);  
  14.     NSLog(@"%@", notification.userInfo);  
  15.     application.applicationIconBadgeNumber = notification.applicationIconBadgeNumber-1;  
  16. }</pre><br>  
  17. </li><li>在後台運行 - 用戶可以看到類似Push Notification的提醒,若用戶選擇查看提醒詳情,則應用通過 ApplicationDelegate的didFinishLaunchingWithOptions進入<br>  
  18. <pre name="code" class="cpp">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  19.     UILocalNotification *localNotification =  
  20.     [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];  
  21.     if (localNotification) {  
  22.         NSLog(@"Notification Body: %@",localNotification.alertBody);  
  23.         NSLog(@"%@", localNotification.userInfo);  
  24.         application.applicationIconBadgeNumber = localNotification.applicationIconBadgeNumber-1;  
  25.     }  
  26.     // set up everything else  
  27.     return YES;  
  28. </pre>}<br>  
  29. </li></ul>  

沒有留言: