2012-05-01 53 views
1

我想编写一个Android应用程序,它将通知从移动设备发送到安装在PC上的客户端应用程序。通知将包含将由客户端解析的数据。通知只是一种方式。Android到PC通知平台

或者换句话说:“从一个设备发送数据的通知到另一个,共享相同的用户帐户”

什么是最好的通知/短信平台来实现这样的行为?

一些要求:

  1. 使用现有[免费]服务器基础设施(每增加一个?)
  2. 移动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用于广播availabilityunavailability资源。

桌面客户端需要发送状态,以便移动客户端可以在线查看它。它还应包含'-1'的priority以防止其接收来自用户联系人的正常聊天消息。它还应该包括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,如存在数据包的“from”所示。在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