Я делаю приложение таймера. Пользователь устанавливает время, и приложение отсчитывает оттуда. Я добавил UILocalNotification, так что он всплывает, даже если вы не в приложение, чтобы сказать вам, таймер закончил:Пауза UILocalNotification
на мой взгляд CONTROLLER:
- (void)setupLocalNotifications {
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
totalSeconds = (setHour * 60 * 60) + (setMinute * 60) + (setSecond);
NSDate *now = [NSDate date];
NSDate *dateToFire = [now dateByAddingTimeInterval:totalSeconds];
localNotification.fireDate = dateToFire;
localNotification.alertBody = @"Timer Done";
localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.applicationIconBadgeNumber = 1; // increment
NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"Object 1", @"Key 1", @"Object 2", @"Key 2", nil];
localNotification.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
В МОЕЙ AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.;
ScrollViewController *sv = [[ScrollViewController alloc] init];
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (notification) {
[self showAlarm:notification.alertBody];
NSLog(@"AppDelegate didFinishLaunchingWithOptions");
application.applicationIconBadgeNumber = 0;
}
self.window.rootViewController = sv; // Make tab bar controller the root view controller
[self.window makeKeyAndVisible];
return YES;
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
[self showAlarm:notification.alertBody];
application.applicationIconBadgeNumber = 0;
NSLog(@"AppDelegate didReceiveLocalNotification %@", notification.userInfo);
}
- (void)showAlarm:(NSString *)text {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Timer"
message:text
delegate:self
cancelButtonTitle:@"Stop Timer"
otherButtonTitles:nil];
[alertView show];
}
Что происходит, я установил UILocalNotification, чтобы выйти после того, как прошло определенное пользователем количество секунд. Однако мое приложение позволяет приостановить таймер. Когда вы остановились, UILocalNotification продолжит работу и уйдет после того, как пройдут секунды. Есть ли способ приостановить локальное уведомление?
Хорошо, спасибо. Это делается путем установки localNotification в nil? – user2397282
@ user2397282: Нет. Если у вас есть только одно уведомление, самым простым методом является вызов '[[UIApplication sharedApplication] cancelAllLocalNotifications]'. –
Или сохраните указатель на объект уведомления и используйте cancelLocalNotification, если их несколько, и вы хотите его отменить. –