проблема с NSTIMER iOS SDK - PullRequest
       3

проблема с NSTIMER iOS SDK

0 голосов
/ 15 марта 2012

я написал как:

[NSTimer scheduledTimerWithTimeInterval:900 target:self selector:@selector(CallGetCounts) userInfo:nil repeats:YES];

, что означает, что я хочу повторять свой таймер каждые 5 минут, но мой таймер не повторяется, не может найти причину,

может любойпожалуйста, скажите мне ответ.

Я написал это в методе "AppDelegate" -> "- (void)applicationDidEnterBackground:(UIApplication *)application".

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

В фоновом режиме ваш код приостановлен, и никакие события таймера вы не получите, пока ваше приложение снова не выйдет на первый план.

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

Вот несколько шагов, как это сделать:

// When you want to schedule:
UILocalNotification* localNotification = [[[UILocalNotification alloc] init] autorelease];
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; // seconds
localNotification.timeZone = [NSTimeZone defaultTimeZone];  
localNotification.alertBody = @"Body text";
localNotification.alertAction = @"Button text";
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

// when it's fired it will call your AppDelegate's didReceiveLocalNotification
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)localNotification 
{ 
    // you can handle timer event here and eventually re-schedule your local notification
}
1 голос
/ 15 марта 2012

Экземпляр UILocalNotification запускает всплывающее окно (и пробуждает ваше приложение) всякий раз, когда оно срабатывает в установленное вами время. Если вы действительно выбрали UILocalNotification, тогда Здесь являются хорошимиучебные ссылки обсуждаются в SO ветке.Надеюсь, что они вам помогут.

1 голос
/ 15 марта 2012

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

Предлагаю вам ознакомиться с Руководством по программированию для iOS и, в частности, Фоновое выполнение и многозадачность .

...