iPhone: Центр уведомлений о неисправностях - PullRequest
0 голосов
/ 19 января 2012

Я написал приложение, которое позволяет пользователю вводить данные в UITextField, и одно из них позволяет вводить их в определенную дату. Я пытаюсь, чтобы оповещение появилось в Центре уведомлений iPhone, когда дата наступила через 15 часов, даже если приложение вообще не работает.

РЕДАКТИРОВАТЬ: Новый код-

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UILocalNotification *localNotif = [[UILocalNotification alloc] init];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMdd"];
NSDate *eventDate=[dateFormatter dateFromString:eventDateField.text];

localNotif.fireDate = [eventDate dateByAddingTimeInterval:-15*60*60];
localNotif.timeZone = [NSTimeZone defaultTimeZone];


localNotif.alertBody = @"Event Tomorrow!";

localNotif.alertAction = @"Show me";

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotif];

}

Ответы [ 3 ]

3 голосов
/ 19 января 2012

Вы пытаетесь отправить сообщение dateByAddingTimeInterval: кому? Никто. Вам нужен получатель для сообщения, объект, который может затем запустить метод.

[[NSDate date] dateByAddingTimeInterval: -20*60];

(NSDate date - текущая дата и время).

1 голос
/ 19 января 2012

Сохраните дату, полученную из текстового поля, в объекте NSDate, eventDate.Вы также хотите установить дату со временем.Причина, по которой вы получаете эту ошибку, заключается в том, что dateByAddingTimeInterval: должен вызываться для объекта NSDate, а не сам по себе идентификаторУстановите fireDate вашего локального уведомления как

localNotif.fireDate=[eventDate dateByAddingTimeInterval:-15*60*60];

. Это вернет дату за 15 часов до события.установите его формат на то, как он хранится в meetingDateField.Затем используйте dateFromString:, чтобы получить NSDate из текстового поля.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"mm'/'dd'/'yyyy"];
NSDate *eventDate=[dateFormatter dateFromString:meetingDateField.text];
1 голос
/ 19 января 2012

Чтобы вызвать [-dateByAddingTimeInterval:], у вас должен быть объект NSDate.В вашем коде выше, вы не делаете.Это должно выглядеть примерно так:

NSDate* now = [NSDate date];
localNotif.fireDate = [now dateByAddingTimeInterval:20*60];
...