2013-08-23 90 views
2

有次我的應用程序的本地通知被觸發(顯示)兩次。我沒有使用模擬器,而是一個真實的設備。我一直試圖得到一個repro步驟,但我無法做到。每次我通過一個斷點/ nslog進行整個過程時,我總是會得到1個預定的通知。有了這個,我認爲我只會得到1通知顯示/解僱。不過,有時候我會收到兩個通知。 我在網上搜索了答案,我無法獲得更多信息。這裏有沒有人經歷過同樣的事情?你怎麼能解決這個問題?本地通知顯示兩次

- (void)scheduleAllNotifications 
{ 
    if (_isEnabled && [[NSUserDefaults standardUserDefaults] boolForKey:NotificationsUserDefaultsKey]) { 
     [self updateFireDates]; 
     for (NSDate *fireDate in fireDates) { 
      UILocalNotification *notification = [[UILocalNotification alloc] init]; 
      notification.fireDate = fireDate; 
      notification.alertBody = @"Message"; 
      notification.alertAction = @"View"; 
      notification.soundName = @"notificationsound.mp3"; 
      [notifications addObject:notification]; 

      [[UIApplication sharedApplication]scheduleLocalNotification:notification]; 
     } 
    } 
} 



- (void)cancelAllNotifications 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
    [notifications removeAllObjects]; 

} 

- (void)updateFireDates 
{ 
    [fireDates removeAllObjects]; 
    NSDate *now = [NSDate date]; 
    NSDate *fireDate = [NSDate dateWithTimeInterval:THREEDAYS sinceDate:now]; 
    if (fireDate){[fireDates addObject:fireDate];} 
} 

cancelAllNotifications被稱爲每一個應用程序被激活 shceduleAllNotifications被稱爲每應用辭職時同時啓動

+0

顯示您的代碼如何添加和檢查通知。 – Wain

+0

我已經添加了我的代碼。實際上,感謝 – cessmestreet

回答

2

既然你似乎是在項目的建設/調試階段,它不會讓我感到吃驚如果這些雙重通知實際上是舊的。它發生在我身上,我認爲設備創建了奇怪的,流浪的通知,實際上在開發/測試期間,我自己創建了錯誤的通知。

你可以做什麼,在userInfo字段中加入一些額外的調試信息。你可以把內部編號,或創建日期/時間,這種東西。然後在通知觸發時記錄這些信息。

你可能真的遇到了一個錯誤,但: local notification "didReceiveLocalNotification" calls twice

+0

,當它發生時,我不處於調試狀態。我剛剛發佈後就開始玩了。 – cessmestreet

4

巴特李四是正確的,這是從以前的測試運行雜散通知。

要解決該問題,請在- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions的AppDelegate中調用[[UIApplication sharedApplication] cancelAllLocalNotifications];,以清除所有以前的計劃通知。

+0

這裏同樣的問題。流浪的通知。我所做的只是卸載應用程序,一旦我再次安裝,它們就消失了。希望在生產中不會發生。 – Dpedrinha