2014-09-24 7 views
0
  • evenArray[] содержит список местного уведомления
  • У меня есть функция, которые создают localnotification, но он вызывает в редактировании и добавить модуль так называемыми несколько раз и дублировать местное уведомление
  • Пожалуйста, дайте мне знать состояние, как проверить уведомление в этом массиве с моим текущим уведомлением, которое я создам, только если он не дублируется.

это уведомление, в котором параметр я буду необходимо сравнить мои уведомления этого «144 = MAS» 144 является уникальным и индексом является уникальнымКак предотвратить локальное дублирование уведомлений в ios?

"<UIConcreteLocalNotification: 0x118b08c0>{fire date = Monday, September 29, 2014 at 6:12:00 PM India Standard Time, time zone = Asia/Kolkata (GMT+5:30) offset 19800, repeat interval = NSWeekCalendarUnit, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Monday, September 29, 2014 at 6:12:00 PM India Standard Time, user info = {\n 144 = mas;\n index = 63;\n userid = \"821e25e7-d76c-4328-bbba-8e367dc70c04\";\n}}", 
"<UIConcreteLocalNotification: 0x118b0cc0>{fire date = Monday, September 29, 2014 at 6:12:00 PM India Standard Time, time zone = Asia/Kolkata (GMT+5:30) offset 19800, repeat interval = NSWeekCalendarUnit, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Monday, September 29, 2014 at 6:12:00 PM India Standard Time, user info = {\n 153 = mbg;\n index = 64;\n userid = \"821e25e7-d76c-4328-bbba-8e367dc70c04\";\n}}" 

)

ответ

2

Вы можете предотвратить его путем очистки предыдущего уведомления с использованием [[UIApplication sharedApplication] cancelLocalNotification: (UILocalNotification *)] или [[UIApplication sharedApplication] cancelAllLocalNotifications].

У вас также есть NSArray с запланированным уведомлением в [[UIApplication sharedApplication] запланированоLocalNotifications].

С помощью этих методов вы сможете управлять своими уведомлениями.

1

Что я понимаю после прочтения вашего вопроса, когда вы редактируете запись, те же уведомления, которые уже добавлены вами, добавив время, добавленное снова во время редактирования. если это правильно, вам нужно удалить предыдущее уведомление при редактировании записи. если у вас есть несколько записей, и в отношении этой записи у вас есть несколько уведомлений, вам нужно предоставить уникальный идентификатор с этим уведомлением, чтобы вы могли легко определить, какое уведомление нужно удалить.

Я также столкнулся с той же проблемой. Поэтому у меня есть уникальное значение в словаре userInfo как целое число, и всякий раз, когда я добавляю или редактирую уведомление, сначала я его проверил, если он уже добавлен, удалите его и добавьте еще, потому что i в моем случае я хочу получать уведомление в соответствии с отредактированной записью.

код, который я использовал, может быть, это будет полезно для вас.

-(void)scheduleNotification:(NSString *)remainderText :(BOOL)isRepeat :(NSDate *)fireDate :(NSString *)notificationId{ 

    NSDictionary *dict=[[NSMutableDictionary alloc]init]; 
    [dict setValue:@"NotificationID" forKeyPath:notificationId]; 
    UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 

    [email protected]"Your Msg"; 
    localNotification.timeZone=[NSTimeZone localTimeZone]; 


    localNotification.userInfo = dict; 
    localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 


    localNotification.fireDate=fireDate; 
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
} 

-(void) deleteNotification:(NSString *)curentNotificationId 
{ 
    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:@"NotificationID"]]; 

     if ([uid isEqualToString:curentNotificationId]) 
     { 
      //Cancelling local notification 
      [app cancelLocalNotification:oneEvent]; 
     } 
    } 

} 

Проверьте это .. писать другие вещи в способе уведомления график, который вы хотите, и помните notificationID с помощью которого передается в метод scheduleNotification должен быть уникальным

+0

В моем коде, когда я нажимаю на одно уведомление, он очищает все от центра уведомлений. Даже я выделил uid. – user3743909

+0

используйте этот код, возможно, это будет полезно для вас – user2493047

-1

Если вы хотите удалить конкретные уведомления Используйте ниже

для уведомления в UIApplication.sharedApplication(). scheduledLocalNotifications

{

UIApplication.sharedApplication().cancelLocalNotification (уведомление)

}

Или

Если вы хотите, чтобы удалить все уведомления Используйте ниже

[[UIApplication sharedApplication] cancelAllLocalNotifications].

Смежные вопросы