Подтвердить что ты не робот

Лучший способ отправить данные с сервера на Android-устройство

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

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

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

4b9b3361

Ответ 1

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

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

А для приложения Android, использующего asmack для долговременных двунаправленных сообщений, см. BuddyDroid.

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

См. Prosody или Tigase если вы заинтересованы и ищете сервер (есть несколько open source).

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

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