Огонь метод 24 часа - PullRequest
2 голосов
/ 18 мая 2011

Я пытаюсь использовать метод один раз в день в указанное время.Я попробовал несколько вещей, но я не могу заставить это работать.Любой совет будет принят во внимание.Кроме того, было бы идеально, если бы он срабатывал независимо от того, открыто приложение или нет.Возможно ли это?

1 Ответ

4 голосов
/ 18 мая 2011

UILocalNotification позволит вам запустить уведомление (но не метод), когда ваше приложение работает в фоновом режиме, или вызовет метод делегата, который вы реализуете (application: didReceiveLocalNotification :), если приложение работаетна переднем плане, или вызовет метод, который вы должны реализовать (application: didFinishLaunchingWithOptions :), когда пользователь ответит на предупреждение.Кроме этого, вы не сможете вызывать метод, когда приложение не на переднем плане, вы сможете только запустить уведомление (которое может отображать значок, воспроизводить звук и т. Д.).

Кстати, рассмотрите возможность отправки отчета об ошибке с яблоком, если вам нужна эта функция.Мне бы хотелось иметь возможность запускать методы в фоновом режиме на основе локальных уведомлений, не дожидаясь, пока пользователь ответит первым.

См. Пример кода Apple:

- (void)scheduleNotificationWithItem:(ToDoItem *)item interval:(int)minutesBefore {
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDateComponents *dateComps = [[NSDateComponents alloc] init];
    [dateComps setDay:item.day];
    [dateComps setMonth:item.month];
    [dateComps setYear:item.year];
    [dateComps setHour:item.hour];
    [dateComps setMinute:item.minute];
    NSDate *itemDate = [calendar dateFromComponents:dateComps];
    [dateComps release];

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if (localNotif == nil)
        return;
    localNotif.fireDate = [itemDate addTimeInterval:-(minutesBefore*60)];
    localNotif.timeZone = [NSTimeZone defaultTimeZone];

    localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ in %i minutes.", nil),
         item.eventName, minutesBefore];
    localNotif.alertAction = NSLocalizedString(@"View Details", nil);

    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.applicationIconBadgeNumber = 1;

    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:item.eventName forKey:ToDoItemKey];
    localNotif.userInfo = infoDict;

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
    [localNotif release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...