2012-05-01 1 views
1

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

Или другими словами: «Отправлять уведомления данных от одного устройства к другому, разделяя ту же учетную запись пользователя»

Что будет лучшей платформой уведомлений/сообщений реализовать такое поведение?

Некоторые требования:

  1. Использование существующих [бесплатно] серверной инфраструктуры (GTalk?)
  2. соединение Mobile-PC должен быть установлен общий проверки подлинности сервера (без трансляции или по IP)
  3. Время уведомления должно быть около реального времени
  4. Простой для реализации
  5. [Необязательно] Использовать аутентификацию учетной записи Google

Любая конструктивная обратная связь о моем требовании будет также оценена.

ответ

2

Звучит так, как будто XMPP соответствует вашим требованиям. Это, безусловно, позволит кому-то использовать свою учетную запись Google Talk или любую другую учетную запись XMPP (например, jabber.org), если ваши «уведомления» разумны по размеру и частоте (в конце концов, это бесплатные услуги!).

Вы должны быть в состоянии выполнить этот штраф, используя существующий libraries. Это сообщение обсудит вещи на базовом уровне XMPP, но многие библиотеки предоставят API более высокого уровня для выполнения описанных здесь вещей.

Некоторые замечания о том, как достичь различных вещей, которые вы хотите:

Каждое подключение к учетной записи XMPP присваивается уникальный идентификатор, называемый 'resource'. В XMPP простой адрес, например [email protected], называется 'bare JID'. Вы также можете отправить конкретное соединение, включив ресурс, [email protected]/your-app829abc («полный JID»). Поскольку ресурсы приходят и уходят, и могут варьироваться (например, в Google их полу-рандомизация), presence используется для трансляции availability и unavailability ресурсов.

Клиент на рабочем столе должен отправить свое присутствие, чтобы мобильный клиент мог видеть его в Интернете. Он также должен включать priority '-1' в своем присутствии, чтобы предотвратить его получение обычных сообщений чата из контактов пользователя. Он также должен включать capabilities или аналогичную идентифицирующую информацию, чтобы мобильный клиент мог идентифицировать его отдельно от других приложений, таких как клиенты мгновенных сообщений, онлайн с учетной записью пользователя.

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

<!-- Desktop sends: --> 
<presence> 
    <priority>-1</priority> 
    <your-app xmlns="http://example.com/your-app" type="desktop" /> 
</presence> 

Итак, теперь с точки зрения мобильного клиента ...ему нужно просто подключиться к той же учетной записи, а также отправить подобное присутствие. После отправки своего собственного присутствия он автоматически получит присутствие от контактов, а также других подключений к одной учетной записи, включая соединение с клиентским ПК.

<!-- Mobile sends: --> 
<presence> 
    <priority>-1</priority> 
    <your-app xmlns="http://example.com/your-app" type="mobile" /> 
</presence> 

<!-- Mobile receives (among other things): --> 
<presence from="[email protected]/foo38Bc21e"> 
    <priority>-1</priority> 
    <your-app xmlns="http://example.com/your-app" type="desktop" />  
</presence> 

Теперь у вас есть полный JID для настольного клиента.

Он может отправить нормальный XMPP message прямо на полный JID клиента настольного компьютера, как видно из «из» пакета присутствия. В XMPP IM сообщения используют <body> element в сообщении, чтобы передать текст, однако, вы можете опустить <body> тег и вставить your own XML data:

<!-- Mobile sends: --> 
<message to="[email protected]/foo38Bc21e"> 
    <your-notification xmlns="http://example.com/your-app"> 
     <any-xml-here/> 
    </your-notification> 
</message> 

Вы сможете получить это сообщение на рабочем столе почти сразу (наибольшая задержка обычно будет в вашей мобильной сети). Для XMPP на мобильных устройствах также посмотрите на XEP-0286: XMPP on Mobile Devices.