我想在我的XMPP聊天消息中添加自定义属性(缺口),如下例所示
<message from='*' to='*' id='123' nick='KASHIF' type='chat'><body>hello</body></message>
Run Code Online (Sandbox Code Playgroud)
我知道,XMPP 并不推荐它,但这是我的要求,因为这个属性(缺口)已经在我正在使用的iOS版本的应用程序中实现.
为此,您需要编辑 Smack 4.1 的 2 个类
1. 节类
定义您的自定义属性 ( nick )
private String nick = null;
Run Code Online (Sandbox Code Playgroud)
定义 Getter 和 Setter
public String getNick() {
return this.nick;
}
public void setNick(String paramString) {
this.nick = paramString;
}
Run Code Online (Sandbox Code Playgroud)
编辑节构造函数
protected Stanza(Stanza p) {
//add this line
nick = p.getNick();
}
Run Code Online (Sandbox Code Playgroud)
编辑addCommonAttributes方法
protected void addCommonAttributes(XmlStringBuilder xml) {
//add this line
if(getNick()!= null)
xml.optAttribute("nick", getNick());
}
Run Code Online (Sandbox Code Playgroud)
2.PacketParserUtils类
编辑parseMessage方法
public static Message parseMessage(XmlPullParser parser)
throws XmlPullParserException, IOException, SmackException {
//add this line
message.setNick(parser.getAttributeValue("", "nick"));
}
Run Code Online (Sandbox Code Playgroud)
现在您可以简单地设置昵称并发送消息,如下所示
Message message = new Message();
message.setType(Message.Type.chat);
message.setStanzaId("123");
message.setTo(number);
message.setNick("SHAYAN");
try {
connection.sendStanza(message);
} catch (NotConnectedException e) {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1608 次 |
| 最近记录: |