2012-10-25 44 views
6

我有一個問題,管理LocalNotifications的一個方面 - 在iOS中刪除單個通知6.從通知中心(的iOS 6)刪除LocalNotifications

enter image description here

我能夠創建帶有文本內容和火災LocalNotification日期和它的作品。

在iOS 5通知發生作爲主屏幕上的AlertView具有兩個按鈕,並觸摸任一後自敗。我可以使用[[UIApplication sharedApplication] cancelLocalNotification:theNotification]取消通知的消息。這裏沒有問題。

在iOS 6中,通知發生在Notificaton Center中,如上圖所示。如果我使用[[UIApplication sharedApplication] cancelLocalNotification:theNotification]取消它,它不會觸發 - 它可以工作。但它觸發後...

我的問題:

我無法抹去這單從通知中心解僱通知。例如,我希望通知在被觸摸後或在應用程序內的某些操作完成後消失。

我試了一下:

  • 使用[[UIApplication sharedApplication] cancelLocalNotification:theNotification] - 取消通知消防(其實沒有必要,因爲該通知火的話),但不會刪除從通知中心解僱通知
  • [[UIApplication sharedApplication] scheduledLocalNotifications]數組中刪除項目 - 不起作用,因爲此函數總是返回空數組,無論設置了多少(工作!)通知(有人知道爲什麼嗎?)

我在做什麼現在

我使用[[UIApplication sharedApplication] cancelAllLocalNotifications]刪除所有通知 - 它取消他們,並從通知中心擦除,然後創建他們回來,沒有一個我想抹掉。

正如你所看到的,這是相當愚蠢的和冗餘的解決方案,但我找不到更好的爲止。

有什麼建議嗎?

+0

感謝@deleteme。我花時間處理這個問題。讀你的問題意識到,爲什麼我調用'[[UIApplication sharedApplication] scheduledLocalNotifications]時我得到一個空數組''。我想我會暫時使用你的解決方案。 – IgniteCoders

回答

1

試試這個......可能是這個幫助...寫下你想清除所有通知的代碼。

   [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

要清除一個單一的通知

你可以計劃通知從一個數組:@property(nonatomic,copy) NSArray *scheduledLocalNotifications

得到你想要的一個由您選擇的索引號,然後通過UILocalNotification *到- (void)cancelLocalNotification:(UILocalNotification *)notification.

您可以在本地通知的用戶信息保存密鑰的唯一值。 獲取所有本地通知,循環遍歷數組並刪除特定的通知。

代碼如下,

UIApplication *app = [UIApplication sharedApplication]; 
NSArray *eventArray = [app scheduledLocalNotifications]; 
for (int i=0; i<[eventArray count]; i++) 
{ 
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i]; 
    NSDictionary *userInfoCurrent = oneEvent.userInfo; 
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]]; 
    if ([uid isEqualToString:uidtodelete]) 
    { 
     //Cancelling local notification 
     [app cancelLocalNotification:oneEvent]; 
     break; 
    } 
} 
+0

我知道如何清除所有通知(我確信我指出了它)。我的目標是擦除一個特定的通知。 – deleteme

+0

檢查我更新我的答案.......擦除一個單一的通知。 – Wolverine

+0

我也在我的答案更新示例源代碼.....可能會有所幫助... – Wolverine