2014-09-24 109 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] scheduledLocalNotifications]

使用这些方法,您应该能够管理您的通知。

1

当您在编辑记录时阅读完您的问题之后,我会理解您在编辑时添加的时间里添加的相同通知。如果它是正确的,则在编辑记录时需要删除先前的通知。如果您有多条记录并且针对该记录有多条通知,则需要为该通知提供一些唯一标识,以便您可以轻松识别需要删除的通知。

我也面临同样的问题,所以我有一个独特的价值userInfo字典作为一个整数,每当我添加或编辑通知,首先我检查它,如果它已经添加删除它,并添加另一个,因为我我的情况我想根据编辑的记录通知。

我使用的代码在这里,可能会对你有帮助。

-(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 2014-09-24 11:01:24

+0

使用此代码可能对您有所帮助 – user2493047 2014-09-24 11:40:02

-1

如果你想删除下面

具体使用的通知

在UIApplication.sharedApplication通知()。scheduledLocalNotifications

{

UIApplication.sharedApplication()。cancelLocalNotification(通知)

}

或者

如果你想删除下面

[UIApplication的sharedApplication] cancelAllLocalNotifications]通知所有使用。