2017-01-20 140 views
-1

我创建了一个Local Notification被点击某个按钮(SetButton)时触发60秒。我的问题现在的问题是,如果SetButton再次按下,它不会覆盖先按下,它会显示2个通知等。如何确保该按钮的第二次按覆盖第一次记者并没有通知的积累?IOS重写本地通知

- (IBAction)SetButtonPressed:(id)sender { 
     UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
     localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60]; 
     localNotification.alertBody = @"HEY GET UP"; 
     localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
     localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 

} 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UILocalNotification *localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
    if ([UIApplication instanceMethodForSelector: @selector(registerUserNotificationSettings:)]) { 
     [application registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]]; 
    } 

    if (localNotification) { 
     application.applicationIconBadgeNumber = 0; 
    } 
} 
+1

你不得不取消先前的本地通知取消所有的通知,如果你不想它开火。或者,如果您不想保留对先前设置的通知的引用,则只需取消所有本地通知。而且要知道,[UILocalNotification]已被弃用... –

+0

@RokJarc您好,感谢的答案,但我怎么取消以前的以前的通知。我仍然在学习目标C –

+0

在这种情况下,最简单的方法将被调用'[[UIApplication的sharedAplication] cancelAllLocalNotifications]'只是你之前注册一个新的。试试它作为你的'SetButtonPressed:'方法的第一行。这样,您不必持有对先前计划的通知的参考。 –

回答

0

它看起来像你只在你的应用程序有一个类型的本地通知。

在这种情况下,你可以保持它的简单。每当你想安排一个新的 - 取消前一个。

- (IBAction)SetButtonPressed:(id)sender { 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

    UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60]; 
    localNotification.alertBody = @"HEY GET UP"; 
    localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
    localNotification.applicationIconBadgeNumber = 
     [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 
} 
1

如果你只使用通知,告知具体的行动,你可以一次使用

[[UIApplication sharedApplication] cancelAllLocalNotifications];