iOS Как установить напоминания приложений

Мы создаем приложение, которое напоминает пользователю об определенных задачах. Пользователь может выбрать получение напоминания на следующих основаниях:

Один раз, Ежедневно, Еженедельно, Еженедельно (в определенный день недели), Каждые две недели, Раз в месяц

Напоминания должны быть настраиваемым всплывающим окном в приложении и/или всплывающим окном, если приложение закрыто. Мой вопрос: как лучше всего настроить напоминания, подобные этим?

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

Спасибо


person JakesRassie    schedule 15.07.2013    source источник


Ответы (2)


Я делаю это в своем приложении, используя NSLocalNotification

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
if (localNotification == nil)
    return;
localNotification.fireDate = dateToRemindOn;
localNotification.timeZone = [NSTimeZone defaultTimeZone];

// details
localNotification.alertBody = @"Alert Message";
// Set the button title
localNotification.alertAction = @"View";
localNotification.soundName = UILocalNotificationDefaultSoundName;

// custom data for the notification to use later
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:reminderID forKey:@"remindID"];
localNotification.userInfo = infoDict;

// Schedule notification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

Это создаст локальное уведомление, и вы сможете сохранить любую информацию, которая может вам понадобиться, в словаре информации о пользователе, и она будет доступна вам, когда она будет получена или открыта.

Используйте этот метод в своем AppDelegate, чтобы проверить, было ли открыто приложение из вашего локального уведомления.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Handle launching from a notification
    UILocalNotification *localNotification =
    [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if (localNotification) {
        //handle local notification
    }
}

И используйте этот метод в своем делегате приложения, чтобы поймать, когда локальное уведомление получено, когда приложение открыто.

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif {
    // Handle notification when app is running
}
person RGullotti    schedule 15.07.2013
comment
Спасибо, будет ли отображаться это уведомление, если приложение полностью закрыто (даже не приостановлено)? Или приложение должно быть открыто? Если пользователь нажимает кнопку в уведомлении, мне нужно, чтобы приложение открывало и запускало определенный метод внутри приложения. - person JakesRassie; 15.07.2013
comment
Да, они получат уведомление, если приложение закрыто, и если они откроют это уведомление, когда приложение закрыто, вы проверите его в методе didFinishLaunching. Если уведомление получено во время работы приложения, будет вызван метод didReceiveRemoteNotification, и вы сможете обрабатывать его по своему усмотрению. - person RGullotti; 15.07.2013

Вы можете настроить NSLocalNotification и обрабатывать состояния приложения: когда вы находитесь внутри приложения, вы можете использовать свой собственный вид, когда вы находитесь вне приложения, вы получите стандартное предупреждение.

person soryngod    schedule 15.07.2013