В iPhone SDK 3.0 я хотел бы зарегистрироваться для получения уведомления, которое предупредило бы мое приложение, когда будет достигнуто определенное время. Является ли это возможным? ThanksРегистрация уведомления в iPhone SDK 3.0
ответ
Если у вас есть в переменной date
в NSDate
, и хотите, чтобы огнь метода dateIsHere:
на этой дату, сделайте следующее:
NSTimer* timer = [[NSTimer alloc] initWithFireDate:date
interval:0.0f
target:self
selector:@selector(dateIsHere:)
userInfo:nil
repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:timer
forMode:NSDefaultRunLoopMode];
[timer release];
Привет, PeyloW, Я пробовал свой код следующим образом, но у меня есть NSInvalidArgumentException. Можете ли вы сказать мне, что я делаю здесь неправильно --- Этот код находится внутри другой функции NSDate * date = [[NSDate alloc ]в этом]; \t date = [NSDate date]; \t NSTimer * Таймер = [[NSTimer Alloc] initWithFireDate: Дата \t \t \t \t \t интервал: 0.не 0f \t \t \t \t \t Цель: На себя \t \t \t \t селектор: @selector (dateIsHere :) \t \t \t \t \t UserInfo: ноль \t \t \t \t \t повторов: NO]; \t [[NSRunLoop mainRunLoop] addTimer: таймер \t \t \t forMode: NSDefaultRunLoopMode]; --- - (void) dateIsHere { \t NSLog (@ "Date is here"); } Спасибо – felix
Я нашел проблему. У меня должен быть установлен таймер даты: (NSTimer *). Я не включил аргумент таймера. :) – felix
Вы должны начать с установки NSTimer для запуска в определенную дату, а селектор, который срабатывает, может быть любым, что вы хотите. Нет необходимости использовать NSNotifications.
Создать NSTimer
, который работает селектор каждые 30 секунд (или любой другой зернистость вам нужно):
[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
-timerFired:
селектор (метод) будет работать каждые тридцать секунд и проверить час, минуту и второй компоненты , выпустив уведомление, если элементы соответствуют желаемому времени:
- (void) timerFired:(NSNotification *)notification {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
NSInteger hour = [dateComponents hour];
NSInteger min = [dateComponents minute];
NSInteger sec = [dateComponents second];
if ((hour == kDesiredHour) && (min == kDesiredMinute) && (sec == kDesiredSecond)) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"kTimeComponentsWereMatched" object:nil userInfo:nil];
}
}
Вы регистрируетесь для прослушивания этого уведомления в некотором другом классе где-то:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"kTimeComponentsWereMatched" object:nil];
Соответственно, у вас есть метод в том же классе, что делает что-то интересное:
- (void) doSomething:(NSNotification *)notification {
// do something interesting here...
}
Вы можете объединить этот код, если это все в одном классе. Или указать target
в NSTimer
, чтобы указать на экземпляр класса, который вы хотите запустить selector
в.
делает это, даже если приложение закрыто? – cone
Я предполагаю, что вы хотите этот таймер на огонь, даже если приложение закрыто. Вы можете использовать уведомление для этого, но у вас должен быть сервер, выпустивший уведомление.
Кроме того, iPhone поднимет оповещение, предлагая пользователю открыть приложение, но они могли бы не делать этого.
Вы ищете «Локальные уведомления», который реализуется в прошивке начиная с версии 4.0:
Это должно быть правильным ответом на> = 4.0. Для более ранних версий, вероятно, все еще есть только NSNotifications (внедрение push слишком много хлопот для большинства)
- 1. iPhone 3.0 SDK vs iPhone 2.0 SDK
- 2. iPhone sdk 3.0 issue
- 3. iphone sdk 3.0 проблема?
- 4. §non_lazy_ptr iphone sdk 3.0
- 5. iphone sdk 3.0 требования
- 6. Регистрация SMS-уведомления на iPhone
- 7. GameKit в iPhone SDK 3.0
- 8. iPhone 3.0 SDK свободно доступен?
- 9. iPhone SDK 3.0 Targeting 2.2.1 SDK
- 10. IBCocoaTouchPlugin на iPhone SDK 3.0
- 11. iPhone SDK 3.0: где Bluetooth?
- 12. iPhone SDK 3.0 Camera Access
- 13. iPhone SDK 3.0 Vs. 2.2.1
- 14. Обновление iphone sdk до 3.0?
- 15. MPMoviePlayerController на iPhone 3.0 SDK
- 16. API видеозаписи в iPhone SDK 3.0
- 17. iPhone 3.0 SDK установить в выпуске устройства
- 18. Связывание статических библиотек в iPhone SDK 3.0
- 19. Проблема MinimumOSVersion в iphone sdk 3.0
- 20. Уязвимость iPhone SDK 3.0 в UITableViewCell .text
- 21. XML разбора в iPhone-SDK 3.0
- 22. отключить прокрутку в UITableView (iPhone SDK 3.0)
- 23. Градиентный трюк изменился в iPhone 3.0 SDK?
- 24. Уведомления о музыкальном проигрывателе в iPhone sdk
- 25. как скомпилировать проект iPhone sdk 3.0 в iPhone sdk4
- 26. iPhone 3.0 SDK, как протестировать устройство 2.2.1?
- 27. Как отключить автоцентр UITextField? (IPhone SDK 3.0)
- 28. Как построить для iPhone 3.0 SDK?
- 29. Создать уникальный String Iphone SDK 3.0
- 30. iPhone SDK 3.0 не обнаружен XCode 3.2
Вы имеете в виду push-уведомление или NSNotification? NSNotification - это просто, но не совсем то, что вам нужно. Что касается push-уведомлений, я никогда их не видел. –