2014-01-02 5 views
1

У меня есть код ниже на моем AppDelegate.m applicationDidEnterBackground, который отобразит локальное уведомление через 10 секунд после закрытия приложения.iOS Локальное уведомление/фоновая активность

Однако метка времени (и любые другие данные, которые я хочу включить), является тем, что она находится во время создания уведомления.

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

Могу ли я сделать это с уведомлением, или мне нужно что-то сделать с фоновой активностью? И если да, то что я называю/как планировать эту деятельность?

NSDate *currentTime = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"hh-mm-ss"]; 
NSString *resultString = [dateFormatter stringFromDate: currentTime]; 

NSLog([NSString stringWithFormat:@"Time: %@",resultString]); 

NSDate *alertTime = [[NSDate date] 
        dateByAddingTimeInterval:10]; 
UIApplication* app = [UIApplication sharedApplication]; 
UILocalNotification* notifyAlarm = [[UILocalNotification alloc] 
            init]; 
if (notifyAlarm) 
{ 
    notifyAlarm.fireDate = alertTime; 
    notifyAlarm.timeZone = [NSTimeZone defaultTimeZone]; 
    notifyAlarm.repeatInterval = 0; 
    notifyAlarm.alertBody = resultString; 
    [app scheduleLocalNotification:notifyAlarm]; 
} 

ответ

0

AFAIK Вы не можете показывать динамические данные в локальных уведомлениях. Если эти динамические данные поступают с сервера, я бы предложил использовать push-уведомления и строить свои сообщения с этими динамическими данными.

Если ваше приложение представляет собой приложение VoIP или Location-based, вы можете использовать соответствующие фоновые режимы, а затем планировать локальное уведомление, как только будут опрошены новые данные.

+0

Это на самом деле шаговый счетчик. То, что я искал, это планировать ежедневное уведомление, чтобы показать количество шагов, сделанных за предыдущий день. Однако для этого мне нужно было бы получить последние данные, в отличие от данных при последнем запуске. Я знаю, что некоторые приложения sen пробуждаются, чтобы собирать последние данные и сохранять их в истории и т. Д., Так как я могу сделать это именно так? Пробуждение приложения раз в день в течение 1 или 2 секунд максимум, захват последних данных и публикация уведомления (и, самое главное, сохранение последних данных!). – MrNeilM

+0

Можете ли вы рассказать о том, как приложение подсчитывает шаги? Учитывает ли их только на переднем плане? На данный момент я полагаю, что вы должны попробовать использовать режим фонового фона и там, где обновление местоположения решит, должно ли приложение планировать локальное уведомление – Roman

+0

Я использую CMCoreMotion CMStepCounter. Поэтому он собирает данные все время, и я просто обновляю дисплей и делаю соответствующие вычисления на переднем плане. Таким образом, данные доступны, но мне нужно обработать их перед установкой локального уведомления. – MrNeilM

Смежные вопросы