Лучший подход для отправки данных с сервера на устройство Android - PullRequest
22 голосов
/ 16 января 2010

Я занимаюсь разработкой приложения для Android, которому необходимо двунаправленное взаимодействие с сервером. Под этим я подразумеваю, что сервер или устройство могут отправлять сообщения в любое время с произвольным интервалом между сообщениями. Отправка данных с устройства на сервер - обычная задача, и я думаю, что это хорошо понимаемая задача, но я не уверен в том, что лучше всего пойти в противоположном направлении от сервера к устройству.

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

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

1 Ответ

19 голосов
/ 16 января 2010

Это то, что XMPP превосходит в. :)

См. Библиотеку Java Smack или asmack для версии, настроенной для Android.

А для приложения Android, которое использует asmack для долговременной двунаправленной связи, см. BuddyDroid .

Изменить, в ответ на комментарий ниже:
Преимущество такого подхода в вашем случае заключается в том, что вы можете сразу отправить неограниченное количество клиенту, без задержки (или негарантированной доставки) SMS. XMPP также обеспечивает безопасность соединения, сжатие и возможность накладывать свои собственные расширения поверх него.
Кроме того & ndash; и я не знаю, на кого вы нацеливаетесь и применимо ли это - mdash; таким образом, вам не нужно полагаться на пользователя, имеющего неограниченный текстовый план (но, конечно, вам нужен тарифный план).

См. Просодия или Tigase , если вы заинтересованы и ищете сервер (есть несколько открытых).

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

Наконец ... хотя вы можете перехватывать входящие SMS-сообщения на устройстве Android, вы не можете предотвратить их отображение в папке входящих сообщений пользователя. Таким образом, вы можете обработать входящее SMS, но затем не можете сказать системе, что нужно удалить сообщение.
Недавно я обнаружил, что это неправда: если вы определите атрибут android:priority в своем прослушивании SMS intent-filter, вы получите " заказанную трансляцию ", которая позволяет отменить входящая SMS-рассылка, прежде чем она будет распространена в другие приложения, такие как входящие SMS-сообщения. Обратите внимание, что это работает только на Android 1.6 и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...