2013-10-07 91 views
2

我開發既推送通知和本地通知iOS應用的通知,我知道如何使用,除去1和中心的所有通知,如何取消從通知中心,這是推送通知

[[UIApplication sharedApplication]cancelAllLocalNotifications]; 

但我的問題是,如果我已經安排了一些本地通知,

和推送通知被運來,所以在didReceiveRemoteNotification 我寫

[[UIApplication sharedApplication]cancelAllLocalNotifications];清晰通知中心,

但它清除我所有的LocalNotification也...

編輯 如果總共有3個notifiction在NC即1來自本地通知,兩個來自推(從服務器)在這種情況下,我該如何處理它,?我在NC上點擊第一條通知(來自服務器)。在這種情況下應該怎麼做,我的應用徽章應該是2.

那麼我該怎麼做?

+0

可能是下面的鏈接是你正在尋找的東西: http://stackoverflow.com/a/10906766/2098401 – Geekoder

+0

@ChinabS:我知道,但我的問題是不同模式。檢查我的問題。 –

回答

3

cancelAllLocalNotifications只會取消本地通知,即使在名稱!不是您可以在文檔中閱讀的推送通知:

取消所有計劃的本地通知的傳遞。

由於推送通知是服務器端,因此您的應用程序需要註銷。要刪除通知中心的推送通知,只需將applicationBadegNumber設置爲0.

+0

Thnaks的答案。所以如果在NC中共有3個通知,即1個來自本地通知,2個來自推送(來自服務器),這種情況下我該如何處理?我在NC上點擊第一條通知(來自服務器)。在這種情況下應該怎麼做,我的應用徽章應該是2.那麼? –

+1

要刪除推送通知,您必須將「applicationBadegNumber」設置爲0.之後,您可以將它設置爲2來自本地通知。 – rckoenes

+0

如果我使'applicationBadegNumber = 0'它是從NC刪除所有通知?或者只刪除推noti。 ? –

2

有一個選項,每個通知都包含一個字典,因此當您創建任何本地通知時,在字典中添加指定此通知的任何鍵是爲本地notification.so你可以檢查,如果它不是我的本地通知,那麼我會刪除它。

-(void)scheduleLocalNotification{ 
    [self cancelAlarm]; //clear any previous alarms 
    UILocalNotification *alarm = [[UILocalNotification alloc] init]; 
    alarm.alertBody = @"alert msg"; 
    alarm.fireDate = [NSDate dateWithTimeInterval:alarmDuration sinceDate:startTime]; 
    alarm.soundName = UILocalNotificationDefaultSoundName; 
    NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"localNotification" forKey:@"localNotification"]; 
    alarm.userInfo = userInfo; 
    [[UIApplication sharedApplication] scheduleLocalNotification:alarm]; 

}

-(void)cancelNotification{ 
for (UILocalNotification *notification in [[[UIApplication sharedApplication] scheduledLocalNotifications] copy]){ 
    NSDictionary *userInfo = notification.userInfo; 
    if (![self.key isEqualToString:[userInfo objectForKey:localNotification]]){ 
     [[UIApplication sharedApplication] cancelLocalNotification:notification]; 
    } 
} 

}

+0

是的,我已經清除了處理本地通知的情況,但是假設在NC中共有3個通知,即1來自本地通知,2來自推送(來自服務器),在這種情況下我該如何處理?我在NC上點擊第一條通知(來自服務器)。在這種情況下應該怎麼做,我的應用程序徽章應該是2.n在NC中,我如何顯示只剩下的通知。 –

+0

我不明白你在說什麼..你想要實際做什麼。刪除任何通知或徽章? – PJR

+0

是隻刪除來自服務器(推送)不是本地的通知。 –