如何使用 Smack API 实现 Google “Off the Record”

Posted

技术标签:

【中文标题】如何使用 Smack API 实现 Google “Off the Record”【英文标题】:How do I implement Google "Off the Record" with Smack API 【发布时间】:2012-04-02 20:01:33 【问题描述】:

我有一个正在使用 gtalk 的 XMPP 聊天客户端。我不知道如何使用 Smack API 实现一些谷歌自定义扩展。

具体来说,我想将 google talk 用户设置设置为 archiveenabled = false,如下面的链接所述。

https://developers.google.com/talk/jep_extensions/usersettings

此外,如果我决定保留 archivingenabled= true 并尝试单独控制 google 关闭记录设置,我需要帮助监控和设置 google:nosave 状态,如以下链接所述:

https://developers.google.com/talk/jep_extensions/otr

我的问题是我无法弄清楚如何在代码中实现这些东西。 igniteRealtime 文档在以下链接中描述了该方法:

www.igniterealtime.org/builds/smack/docs/latest/documentation/providers.html (注意:http:// 已被删除,因为我超出了链接限制)

如果有任何关于如何编写这 2 个 google talk 扩展程序的示例,我将不胜感激。

谢谢! 马特

【问题讨论】:

【参考方案1】:

首先创建一个扩展 IQ 的数据包以发送您的请求。然后可以使用SynchPacketSend() 发送。每个单独的命令都是要添加到此 IQ 数据包的扩展。

然后创建一个提供程序,如您提供的链接所示,将回复转换为您的自定义数据包类型。

您可以查看LeafNode.getItems() 请求作为示例。只需按照代码操作,它将向您展示如何创建和发送适当的 IQ 数据包。查看提供程序包以了解如何接收回复。

【讨论】:

谢谢罗宾,非常感谢您的帮助!

以上是关于如何使用 Smack API 实现 Google “Off the Record”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Smack API 语音/视频聊天

当使用 Smack 4.1.0 API 作为 Google 的 GCM CCS 的 XMPP 客户端时,SecurityMode.required 不起作用

如何使用 Smack XMPP API 处理(失败的)登录尝试

使用 smack 连接到 Google Talk

openfire+smack怎么实现类似于qq群的功能?

smack api中的连接问题