2016-02-23 2 views
0

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

Я пробовал с API UIBackgroundTaskIdentifier, он позволяет мне выполнять код только за 180 секунд не более того.

Я не хочу использовать тихое дистанционное оповещение.

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

, пожалуйста, помогите мне, ребята.

- (void)applicationDidEnterBackground:(UIApplication *)application { 
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; 
    NSTimer *loop = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(insideLoop) userInfo:nil repeats:YES]; 
    [[NSRunLoop currentRunLoop] addTimer:loop forMode:NSRunLoopCommonModes]; 
} 
-(void)insideLoop { 
    NSLog(@"insideLoop"); 
} 
+1

Вы не можете бегать в фоновом режиме на неопределенный срок. Ваше приложение будет прекращено через 180 секунд – Paulw11

+0

, когда я попробовал, он регистрировался на неопределенный срок. – sanjayzed

+0

Когда вы работаете под отладчиком, ваше приложение не будет прекращено, если вы превысите фоновое время, но когда вы этого не сделаете. – Paulw11

ответ

0

Да, Apple отклонит ваше приложение, если вы сделаете это.

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

+0

Да, это мое беспокойство. так что вы предлагаете. спасибо – sanjayzed

+0

Мое предложение: Не делай этого. –

+0

любое альтернативное решение для решения моей проблемы. – sanjayzed

0

Таким образом, нет никаких шансов, что вы пойдете с этим конкретным подходом.

Есть варианты запуска кода при возникновении определенных событий с устройством, таких как изменение местоположения. Доступные варианты фоновой активности можно прочитать here, но, как я уже сказал, у вас здесь не получится.