2012-06-27 1 views
1

Я новичок в мобильной разработке, и у меня есть проект, и я провел целые дни в поисках решения проблемы до тех пор, пока не потерялся, поэтому надеюсь, что смогу найти окончательный ответ здесь.Может ли сервер уведомлять приложение iOS/Android об изменениях без уведомления пользователей?

У меня есть сервер (php & MySQL DB) и разработка мобильного приложения в iOS + Android, которое извлекает данные с сервера. Мобильное приложение должно взять данные с сервера в первом запуске и сохранить его в телефоне, поэтому всякий раз, когда он запускается снова, он берет сохраненные данные.

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

Я думал об использовании webservice (возможно, REST с RestKit) или применяя временные метки на записях сервера, и все это не проблема.

Моя проблема заключается в том, что я не могу найти способ, чтобы сам сервер уведомлял приложение об изменениях всякий раз, когда происходят изменения, и позволяет приложению обновлять новые данные. Я думал об использовании push-уведомлений, но - особенно в iOS - он не может быть скрыт от пользователей.

Так можно ли это сделать? это сложно? это стоит? другие предложения?

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

ответ

1

По крайней мере, в iOS решением будет использовать Apple Push Notifications. Если вы не хотите быть навязчивым и хотите, чтобы быть как можно более прозрачным, вы можете определить, какие «уведомлений» сигналы вы хотите, как это:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

Что касается фонового процесса, я не Думаешь, ты сможешь это сделать. Apple очень строг в том, что вы можете делать в фоновом режиме (не фоновый поток, а фон как рабочий процесс, пока вы не в приложении). То, что я бы посоветовал, будет использовать значок оповещения, поэтому пользователь будет знать, что есть что-то новое, и когда он вошел в приложение, вы можете запустить свое обновление.


Я согласен с Yase:

Почему обновить данные, если пользователь не знает об этом ?.

Вы всегда должны сделать это как можно более удобным для пользователей. Не позволяя вашему пользователю знать, что приложение может потреблять ресурсы, это плохо, на мой взгляд. Представьте, что вы обновляете 2 МБ информации, а пользователь находится на 3G ...

+0

хорошо, например, часть приложения. Профиль специалиста. Здесь я буду использовать уведомления для нового специалиста, где я хочу, чтобы пользователи знали об этом, но иногда некоторые данные о существующих специалистах могут меняться, поэтому я не хочу беспокоить пользователя при каждом изменении. то есть такие изменения также не будут большими. В любом случае, я думаю, что смогу пережить это и использовать, если не будет лучшего решения. – Shanx

+0

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

+0

Да, похоже, что это произойдет. – Shanx

1

Можете ли вы объяснить, что вы пытаетесь сделать? Классическая идиома здесь должна была бы обновлять данные при запуске приложения (вы можете использовать кешированную версию, если она еще актуальна, и если у пользователя нет соединения) Зачем обновлять данные, если пользователь не знает из этого?

+0

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

1

Я не уверен, правильно ли я выполняю ваш вопрос, но похоже, что сервер должен знать, что были внесены изменения, а затем уведомить пользователя об этих изменениях.

Почему бы не запустить хрон, чтобы проверить сервер на любой приуроченная цикл вы хотите, и затем либо отправить уведомление толчок к пользователю (КСН)

iOS Push Notificaton Tutorial

Я мало опыта Android, но кажется более заметным делать push-уведомления на этих устройствах. (Я уверен, что кто-то исправит меня на этом достаточно скоро, хотя: D)

Это может помочь:

Android Push Notifications

1

Это не возможно на прошивку без ведома пользователя приложения - только так вы можете обновить данные приложения из стороны сервера, если ...

  1. ... приложение открыто, и вы держите соединения или открытый
  2. ... вы отправляете сообщение нажимной (так что пользователь op в приложении)

В обоих случаях пользователю известно, что приложение запущено. Что вы можете сделать, так это то, что вы обновляете данные в фоновом режиме, пока пользователь использует приложение. Вы можете использовать push-сообщения, чтобы пользователь открыл приложение. Но все.

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

0

Для данных приложения вы должны обновить проверьте версию своих данных на сервере. Лучший способ для этого - заставить ваше приложение запрашивать ваш сервер при каждом запуске приложения: пользователь запускает приложение -> приложение запрашивает сервер, если есть новые данные в стиле API RESTful -> серверный ответ, который да/нет -> если появляются новые данные, приложение загружает их на устройство.

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