Android C2DM: определите, можно ли доставить push-уведомление сейчас - PullRequest
1 голос
/ 10 марта 2012

есть ли способ определить, можно ли доставить push-уведомление прямо сейчас? Насколько я знаю, это невозможно, но я не уверен в этом.

Итак, мой сценарий выглядит так: У меня есть приложение для Android У меня есть свой собственный сервер

Мое приложение на моем телефоне Android должно взаимодействовать с моим приложением на телефоне моего друга Android. Сейчас я ищу коммуникационную среду в реальном времени, и я думаю, что C2DM может мне помочь.

Итак, давайте скажем: Мое приложение на телефоне A должно написать небольшое сообщение в мое приложение на телефоне B. Предположим, что телефон А находится в сети и может общаться с моим сервером. Таким образом, телефон А отправил бы сообщение на мой сервер, и теперь мой сервер попытался бы доставить это сообщение на телефон Б.

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

Итак, дело в том, что мне действительно нужно знать, возможно ли в данный момент доставить его на телефон B через C2DM (конечно, мой сервер знает регистрационный идентификатор C2DM телефона B). В противном случае, например, если телефон B не подключен к Интернету и не может получать push-уведомления C2DM, мой сервер отправит смс на телефон B.

Можно ли определить, если телефон B подключен к сети? Я пытаюсь связаться с каждым пользователем (если его телефон включен). Если он в сети, то через C2DM, иначе через SMS, чтобы сообщение доставлялось в этот самый момент любым способом.

Примечание: Я знаю, что C2DM может хранить уведомления и доставлять сохраненные уведомления, когда телефон B подключен к сети, но я не хочу его использовать. Обратите внимание, что я знаю (архитектурно), как использовать C2DM. Таким образом, «сообщение», которое должно быть доставлено с телефона A на телефон B, не будет доставлено непосредственно в push-уведомлении C2DM с текстом сообщения / конфиденциальными данными в качестве тела сообщения. Конечно, доставленное сообщение - это всего лишь «сообщение об обновлении», сообщающее моему приложению по телефону B, что что-то изменилось, и приложение должно теперь подключиться к моему серверу, чтобы получить (опросить) последнее состояние с «текстовым сообщением», которое было отправлено с телефона А вам (телефон Б)

1 Ответ

1 голос
/ 10 марта 2012

есть ли способ определить, можно ли доставить push-уведомление прямо сейчас?

Нет. Нет никакой гарантии, что сообщение C2DM будет когда-либо доставлено, не говоря уже о немедленном.

Можно ли определить, если телефон В онлайн?

Телефон B может знать, находится ли он в сети. Если вы реализуете сервер с каким-то видом длительного сокетного соединения (например, XMPP), этот сервер может узнать, имеет ли он соединение с открытым сокетом с телефоном B.

...