停止重复本地通知 iOS

Stop Repeating Local Notification iOS

我每 30 秒初始化一次本地通知。一旦用户按下停止本地通知的按钮,我想停止重复它。

问题是我找不到解决方法。它每 30 秒重复一次

这就是我设置 localnotification 的方式

  // Schedule the notification
    UILocalNotification* localNotification = [[UILocalNotification alloc] init];
    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];
    localNotification.alertBody = @"Testing Repeating Local Notification";
    localNotification.applicationIconBadgeNumber = 1;
    localNotification.timeZone = [NSTimeZone defaultTimeZone];
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    localNotification.repeatCalendar = [NSCalendar currentCalendar];

    localNotification.repeatInterval = kCFCalendarUnitSecond;

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

我试过了[[UIApplication sharedApplication] cancelAllLocalNotifications];。但它确实有效。

能否将 repeatInterval 设置为 0。根据文档,如果将其设置为零,将触发一次通知。因此,当按下停止按钮时,您可以执行以下操作

localNotification.repeatInterval = 0;
[[UIApplication sharedApplication] cancelAllLocalNotifications];

我解决了。

刚刚从上面的代码中删除了 localNotification.repeatCalendar = [NSCalendar currentCalendar];

当您在应用程序活动状态下收到通知时,您可以删除通知。

就像

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    if (application.applicationState == UIApplicationStateActive)
    {
        NSLog(@"Application is active");

        /*
        ...
        do some process
        ...
        */

        //remove notification
        [application cancelLocalNotification:notification];
    }
    else
    {
        NSLog(@"Application is inactive");
    }
}