2013-07-19 52 views
4

Я хочу обновить свою локальную базу данных текущим сервером через веб-службу. Я знаю, как отправить запрос на сервер и проанализировать вывод веб-службы. Проблема в том, что я хочу, чтобы это обновление происходило каждые 24 часа, независимо от того, открыто или закрыто приложение. Я просто хочу знать, можно ли это сделать или нет. Если возможно, кто-нибудь скажет мне, как это сделать.Как обновить приложение каждые 24 часа в объекте c

Большое спасибо заранее

+0

Нет надежного способа сделать это как с iOS 6.x (но проверьте форумы dev для некоторой соответствующей информации о iOS 7). – borrrden

+0

Вы можете использовать push-уведомление для него. – Jageen

+0

Какие данные вы пытаетесь нажать на сервер? –

ответ

3

Это может быть сделано только тогда, когда ваше приложение работает (на первый план) с использованием UILocalNotifications, которые могут быть использованы для огня события после продолжительности и вы можете обновить свою базу данных.

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

Проверить эту ссылку: Which type of services can be used if app is in background mode

+0

хороший ответ. Продолжайте это :) –

+0

Хммм .. спасибо, чувак –

+0

Даже тот же ответ тоже в моем сознании n, прежде чем вводить ans, которые я только что прочитал. :) –

0

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

вы можете сделать это, когда ваше приложение открыто.

Когда вы обновляете базу данных в первый раз, вы можете сохранить свою временную метку в NSUserDefaults, а затем в следующий раз, когда ваше приложение открыто, текущая метка времени больше, чем (24 часа) вашей предыдущей метки времени (которая хранится в NSUserDefaults), тогда обновить свою базу данных и обновить временную метку в NSUserDefaults.

0

Nope. Apple не допустит этого.

Необходимо сделать все возможное, чтобы попытаться сохранить обновление, нет уверенного способа, которым пользователь загрузит ваши вещи, что приложение будет сохранено на переднем плане, что его покрытие 3G хорошее (у вас, T-Mobile) и т. д.

Если вы имеете дело со статическим контентом, который нужно обновлять время от времени, то сохраняйте последнюю дату, обновленную на устройстве (NSUserDefaults), и когда пользователь запускает приложение, спрашивает сервер «Эй, брат, в прошлый раз, когда я обновлял это NSDate, у вас есть что-нибудь для меня?» Затем выполните соответствующее обновление.

2
  • Создать столбец для метки времени в вашей webservice DB.

  • При первом запуске в - (void)applicationWillEnterForeground:(UIApplication *)application метода в appDelegate, получить timestamp от сервера и сохранить, что вы местные DB/Plist т.д.

  • Поместите состояние в - (void)applicationWillEnterForeground:(UIApplication *)application и когда приложение приходит снова на передний план, проверьте, local timestamp и server timestamp имеет разность 24 hours, начните обновление local DB с помощью server. И после того, как обновление будет выполнено, снова сохраните timestamp от server до local в течение следующих 24 часов.

Имеет смысл? Обновление начнется только тогда, когда application поступит в foreGround. Таким образом, вы можете обновить свой local DB не только на 24 часа, но и в любое время.

Другой простой способ - создать file (любой пустой файл) локально, когда application подходит к foreground. И когда application приходит к foreGround в следующий раз, проверьте, creation time этого файла более 24 часов. Если да, возьмите данные с сервера и перезапишите file. Таким образом, вы не можете отправить сигнал с сервера для обновления локальной базы данных приложений.

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