2016-09-04 1 views
0

В моем приложении пользователи выполняют викторины. Результаты этих операций отправляются на сервер. Но когда пользователи не подключены к Интернету, я сохраняю результат в локальной базе данных. Когда пользователь подключается, я отправляю результаты на сервер. Пусть пользователь выполнил 3 викторин в автономном режиме, и мой местный DB выглядит следующим образом:Выполнить вызов API, когда приложение находится в фоновом режиме, и пользователь, только что подключенный к Интернету

+-------+-----------+----------+ 
| marks | chapterID | dateTime | 
+-------+-----------+----------+ 
| 32.5 |  32 | 02-02-16 | 
+-------+-----------+----------+ 
| 39.0 |  35 | 02-02-16 | 
+-------+-----------+----------+ 
| 33.0 |  36 | 02-02-16 | 
+-------+-----------+----------+ 

И когда пользователь подключается (даже мое приложение не работает), я исполню этот:

www.xyz.com/api/stoer_marks?user_id=4323&chap_id=32&marks=32.5&date_time=02-02-16 
www.xyz.com/api/stoer_marks?user_id=4323&chap_id=35&marks=39.0&date_time=02-02-16 
www.xyz.com/api/stoer_marks?user_id=4323&chap_id=36&marks=33.0&date_time=02-02-16 

Итак, что мой план. Мое приложение для Android делает это с Broadcast Receiver, но что в iOS? Я искал Google и нашел раздел уведомлений Silent Push из this tutorial или Background Execution, может быть, мое решение, но я запутался как новичок в iOS. Скажите, пожалуйста, как я могу это сделать?

+0

Приложения iOS не могут этого сделать. Нет эквивалента прослушивания в фоновом режиме для изменения соединения, а также никакого реального исполнения фона, а push-уведомление будет работать только тогда, когда в момент отправки нажмите, в этот момент в этом случае происходит соединение. Есть некоторые ограниченные возможности фона, но не то, что вы хотите сделать. – Gruntcakes

+0

. Можно ли установить отметку счетчика (пока приложение не работает), которое проверяет соединение каждые x минут? –

+0

Также скажите, пожалуйста, [этот пример] (https://gist.github.com/RameshRM/8ca0a1be512520a5240e) работать, когда приложение не работает –

ответ

1

Нет прямого способа сделать это, о котором я знаю. Однако вы можете:

  • Использование фоновых загрузок. Таким образом, iOS будет выполнять загрузку для вас, когда это возможно (и уведомлять вас, когда это будет сделано).

  • Опираясь на фон извлечения. Это вызовет ваше приложение в фоновом режиме всякий раз, когда мне нравится iOS. Нет никакой гарантии (поскольку iOS принимает решение назвать приложение на основе нескольких критериев), и может быть довольно задержка.

Следует также отметить, что, как вы делаете сторону изменения сервера, вы не должны использовать GET запрос, а скорее POST, PUT или PATCH. Вы также должны убедиться, что ваш серверный скрипт может правильно обрабатывать обновления вне очереди, на всякий случай.

0

Вы должны зависеть от выбора фона.

  • Silent push notification wan't не работает, когда ваше приложение не работает.
  • Выполняйте свой код в фоновом режиме и отправляйте свои данные на сервер. И для этого лучше использовать запрос POST и PUT.
Смежные вопросы