我希望使用XMPP向客户端推送数据,这将转化为用户的通知,并计划使用他们的Google ID登录我的应用程序。据我了解,XMPP是一条直接发送到地址的简单消息,但我希望客户端能够将其作为指令并将其转换为游戏状态信息。
如果用户在Google聊天中收到一堆命令元组或十六进制垃圾,那将非常令人沮丧!我是否误解了所有这些工作方式?
我希望使用XMPP向客户端推送数据,这将转化为用户的通知,并计划使用他们的Google ID登录我的应用程序。据我了解,XMPP是一条直接发送到地址的简单消息,但我希望客户端能够将其作为指令并将其转换为游戏状态信息。
如果用户在Google聊天中收到一堆命令元组或十六进制垃圾,那将非常令人沮丧!我是否误解了所有这些工作方式?
JIDs(Jabber / XMPP IDs,因此也包括Google Talk IDs)有多种形式。
第一种是“bare JID”,例如:user@example.com
其次是“full JID”,例如:user@example.com/xyz123
,其中xyz123
被称为resource(资源)。
一个用户可以同时从多个客户端登录到他们的XMPP帐户,只要每个客户端使用唯一的资源即可。对于Google Talk而言,通常服务器会分配资源。
当你与某人在XMPP上交谈时,通常使用他们的bare JID来寻址消息——你不需要关心消息传递到哪个客户端;该人的服务器根据其可用性等将其定向到相应的客户端。
但是你也可以直接寻址到一个full JID。这就是你想做的,这样只有user@example.com/my-game-some-unique-ID
才能接收你特定于游戏的消息。
我不知道Google App Engine API是否提供了这种灵活性 :)
另一种选择是发送不同的消息类型——如果GAE允许的话。XMPP是可扩展的,这意味着你不必向最终用户发送纯文本的<message/>
标准格式的XML。你可以在其中嵌入一个专门的负载,如<game/>
子元素,因为常规即时消息客户端不知道如何解析你的<game/>
元素,它们将不会向用户显示任何信息。只有你的游戏客户端才能解析和理解此信息。
“Xtify有一个开箱即用的解决方案,运行XMPP的变体。然后,您可以使用他们的Web服务将通知、自定义数据和意图推送到设备和应用程序中。我一直在使用他们更标准的解决方案(推送和管理平台),但推送API也可以免费使用。