在Android上使用XMPP推送用户通知 - 以任何方式定位这些通知,以便他们不会访问Google Talk等

Hor*_*ein 12 google-app-engine android xmpp

我想使用XMPP将数据推送到我的客户端,这将转换为用户的通知,并计划使用他们的google-id登录我的应用程序.我理解XMPP的方式是它是一个直接发送到地址的简单消息,但我希望客户端将其作为指令获取并将其转换为游戏状态信息.

如果用户在谷歌聊天中获得一堆命令元组或十六进制垃圾,那将是非常令人沮丧的!我误解了这一切的运作方式吗?

Chr*_*Orr 16

JID(Jabber/XMPP ID以及Google Talk ID)有多种形式.

首先是"裸JID",例如:user@example.com
其次是"完整JID",例如:user@example.com/xyz123,其中xyz123称为资源.

只要每个客户端使用唯一资源,一个用户就可以同时从多个客户端登录到他们的XMPP帐户.使用Google Talk,通常服务器会分配资源.

当你通常在XMPP上与某人交谈时,你会使用他们的裸JID来处理消息 - 你不关心消息被传递到哪个客户端; 该人的服务器根据其可用性等将其定向到适当的客户端.

但您也可以直接将消息发送到完整的JID.这是您想要做的,因此只user@example.com/my-game-some-unique-ID接收您的游戏特定消息.

Google App Engine API是否为您提供了这种灵活性,我不知道:)


另一种选择 - 再次,如果GAE允许这样做 - 是发送不同的消息类型.
X MPP是e X tensible,这意味着您不必<message/>向最终用户发送普通的旧节; 你可以在里面贴一个专门的有效负载就像一个<game/>孩子节,因为普通的IM客户端不知道如何解析你的<game/>节,它们对用户没有任何帮助.只有您的游戏客户端才会解析并理解此信息.