2012-12-28 51 views
0

我正在爲表中的某些行設置本地通知,針對特定日期和時間。因此,考慮iOS中的本地通知問題

情況1:當用戶第一次設置本地通知時,他從日期選擇器中選擇日期,然後將其傳遞給本地通知對象。

NSArray *notificationarray = [[UIApplication sharedApplication]scheduledLocalNotifications]; 
     if([notificationarray count]== 0) 
     { 
      m_alarmLocalNotification = [[UILocalNotification alloc] init]; 
      m_alarmLocalNotification.fireDate = DateTime; 
      m_alarmLocalNotification.timeZone = [NSTimeZone defaultTimeZone]; 

      NSDictionary *infoDict = [NSDictionary dictionaryWithObject:m_Name forKey:@"ID"]; 
      m_alarmLocalNotification.userInfo = infoDict; 

      [[UIApplication sharedApplication] scheduleLocalNotification:m_alarmLocalNotification];   

案例2:修改本地notiification日期。

NSArray *notificationarray = [[UIApplication sharedApplication]scheduledLocalNotifications]; 
       for (int i = 0;i < [notificationarray count];i++) 
       { 
        UILocalNotification *notificationObject=[notificationarray objectAtIndex:i]; 
        NSString *Name=[notificationObject.userInfo valueForKey:@"ID"]; 

        if(Name isEqualToString:m_Name]) 
        { 
         [[UIApplication sharedApplication] cancelLocalNotification:notificationObject]; 
        m_alarmLocalNotification = [[UILocalNotification alloc] init]; 
        m_alarmLocalNotification.fireDate = DateTime; 
        m_alarmLocalNotification.timeZone = [NSTimeZone defaultTimeZone];  


        NSDictionary *infoDict = [NSDictionary dictionaryWithObject:m_noteName forKey:@"ID"]; 
        m_alarmLocalNotification.userInfo = infoDict; 

        [[UIApplication sharedApplication] scheduleLocalNotification:m_alarmLocalNotification]; 
        } 
        else 
        { 

        m_alarmLocalNotification = [[UILocalNotification alloc] init]; 
        m_alarmLocalNotification.fireDate = DateTime; 
        m_alarmLocalNotification.timeZone = [NSTimeZone defaultTimeZone];  


        NSDictionary *infoDict = [NSDictionary dictionaryWithObject:m_noteName forKey:@"ID"]; 
        m_alarmLocalNotification.userInfo = infoDict; 

        [[UIApplication sharedApplication] scheduleLocalNotification:m_alarmLocalNotification]; 
       }   

     }   

案例3:刪除本地notiification。

NSArray *notificationarray = [[UIApplication sharedApplication]scheduledLocalNotifications]; 
     NSLog(@"notification count:%d",[notificationarray count]); 
     for (int i = 0;i < [notificationarray count];i++) 
     { 
      UILocalNotification *notificationObject=[notificationarray objectAtIndex:i]; 
      NSString *Name=[notificationObject.userInfo valueForKey:@"ID"]; 
      if([Name isEqualToString:m_Name]) 
      { 
       [[UIApplication sharedApplication] cancelLocalNotification:notificationObject]; 
      } 
     } 

面臨的問題。 0)我不確定我是否以正確的方式做。 1)即使我刪除我的應用程序並重新安裝一次,默認的schedulednotification數組也不會被取消分配。我的意思是它包含一些以前的通知。 2)每當我刪除我的單元格我想本地通知應該被刪除。

問候 蘭吉特

回答

0

怎麼樣,如果你使用下面的代碼同時通知修改的事情會

NSArray *notificationarray = [[UIApplication sharedApplication] scheduledLocalNotifications]; 
    [notificationarray enumerateObjectsUsingBlock:^(UILocalNotification *notification,NSUInteger idx, BOOL *stop) { 
     if ([[notification.userInfo valueForKey:@"ID"] isEqual:@""]) { 
      notification.fireDate = [NSDate date]; 
     } 
    }];