2012-04-10 2 views
2

Я никогда не кодировал приложение с Push Notifications, и у меня есть очень общий вопрос. Я хотел бы обновить данные UITableview (исходящие из веб-службы) автоматически без «pull to refresh» или любого другого взаимодействия пользователя. Можно ли использовать Push-уведомления, чтобы сообщить моему приложению о смене данных, чтобы избежать опроса каждые xx секунд, тратящих трафик и аккумулятор?Эффективное автоматическое обновление UITableview без взаимодействия с пользователем (IOS 5)

Другими словами, хотя мое приложение работает на переднем плане (возможно), я могу обрабатывать сообщение, и пользователь не получит всплывающее окно, но что происходит иначе?

Есть ли другой способ добиться такого же результата?

Я собираюсь использовать IOS 5.0+

Заранее спасибо

ответ

4

Вы можете сделать сервер HTTP-запрос, который возвращает только то, если произошло изменение. Затем, если этот ответ не пуст, вы можете перезагрузить данные. Функция, которую вы можете вызвать с помощью NSTimer.

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(get) userInfo:nil repeats:YES]; 

и

-(void)get { 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/app.php"]]; 
    [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
} 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    if(![responseString isEqualToString:@""]) { 
    // reload 
    } 
} 
+0

или комбинировать это с 'didReceiveLocalNotification' (ответ Стивеном Дарлингтоном выше) – Dion

+0

Спасибо! Это очень помогает. К сожалению, я не могу голосовать, так как у меня нет 15 очков репутации! – vassilag

+0

Вы сказали, что хотите избежать опроса! Просто потому, что нет данных в теле, это не означает, что радио выключено или что данные не переданы. –

1

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

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif { 

Это довольно хорошо documented by Apple.

+0

Спасибо, Стивен. – vassilag

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