У меня есть приложение, написанное на Objective- C, которое нуждается в автоматической загрузке некоторых данных с сервера node.js.
Приложение 1 отправляет на мой сервер сообщение, которое Приложение 2 затем должно получить. Приложение 2 должно загрузить это сообщение автоматически (без кнопок ref sh). Эти сообщения являются общими данными, а не удаленными уведомлениями с APN.
В настоящее время я использую следующее:
- (void) checkForNewMessages {
// call the method on a background thread
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self->dataParser getMessages:^(NSArray *arr, NSError *error) {
// If there's an error
if (error) {
return;
}
// otherwise
[self->messageArray removeAllObjects];
self-> messageArray = [NSMutableArray arrayWithArray:arr];
if (self-> messageArray) { // is not nil
// update UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self->newMessageTimer invalidate];
[self tableRefresh];
});
}
}];
});
}
, который использует запрос GET для извлечения сообщений (управляется повторяющейся 10-секундной таймер, который делает недействительным при обнаружении сообщений).
Я полагал, что это будет работать, поскольку он работает в фоновом режиме - но это стало довольно глючным, и полагается на таймер - он также часто замораживает пользовательский интерфейс, пока запрос происходит, даже если он должен работать в фоновом режиме.
По сути, есть ли лучшее решение для этого типа функциональности или это кажется совершенно уместным для производственного приложения.