- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 DelayInformationManager
类,我知道这是实现此目的的类。但是,我不知道如何使用它,如何指定 Jid 目的地,如何实际发送等等。
谁能给我一个简短的例子来说明它的用法?
最佳答案
使用以下你可以使用 smack lib 实现 Delayed Delivery
。
发送延迟交货收据
public void sendReceipt(String toJID, String sender, final String stanzaID, final String id, final long millis, Message.Type msgType) {
if(isConnected()){
Message ack = null; //2017-11-17T15:21:50.063+00:00
try {
String fromJidGroup = toJID;
if(msgType == Message.Type.groupchat){
fromJidGroup = ActivityHelper.createJid(sender) ;
}else{
fromJidGroup = toJID;
}
ack = new Message(JidCreate.from(fromJidGroup), Message.Type.chat); //msgType
ack.addExtension(new DeliveryReceipt(id));
} catch (XmppStringprepException e) {
e.printStackTrace();
}
if(millis!=0) {
DelayInformation delay = new DelayInformation(new Date(millis));
ack.addExtension(delay);
}
if(stanzaID!=null){
ack.setStanzaId(stanzaID);
}
try {
if(connection.isSmEnabled() && connection!=null) {
//addStanzaIdAcknowledgedListener send successfully Receipt or not in server
connection.addStanzaIdAcknowledgedListener(ack.getStanzaId(), new StanzaListener() {
@Override
public void processPacket(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException {
if(registerXmppListener!=null){
registerXmppListener.onStanzaIdAcknowledgedReceived(stanza);
}
}
});
}
connection.sendStanza(ack);
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
} catch (InterruptedException | StreamManagementException.StreamManagementNotEnabledException e) {
e.printStackTrace();
}
}
}
接收Delayed Delivery
,先用xmpp连接注册ReceiptReceivedListener
private ReceiptReceivedListener mReceiptReceivedListener;
mReceiptReceivedListener = new ReceiptReceivedListener() {
@Override
public void onReceiptReceived(Jid from, Jid to, String rec_id, Stanza stanza) {
if(registerXmppListener!=null) {
Log.d("onReceipt","onReceipt stanza : " + stanza.toXML());
registerXmppListener.onDeliveryStatusReceived(from.toString(),to.toString(),rec_id,stanza);
}
}
};
mDeliveryReceiptManager.addReceiptReceivedListener(mReceiptReceivedListener);
onDeliveryStatusReceived
监听器
public void changeMessageDeliveryStatus(String from, String to, String rec_id, Stanza stanza){
if(stanza instanceof Message) {
Message msg = (Message) stanza;
String jid = "";
if(msg.getType().equals(Message.Type.chat)){
jid = ActivityHelper.getBareJID(from);
}else if(msg.getType().equals(Message.Type.groupchat)){
jid = ActivityHelper.getSenderFromGroup(from);
}
String sender="";
long date = System.currentTimeMillis();
String stanza_id=stanza.getStanzaId();
int chat_type = 0;
int isPrivate = ChatConstants.ISPRIVATE_NO;
DelayInformation timestamp = (DelayInformation)msg.getExtension("delay", "urn:xmpp:delay");
if (timestamp == null)
timestamp = (DelayInformation)msg.getExtension("x", "jabber:x:delay");
if (timestamp != null)
date = timestamp.getStamp().getTime();
}
}
关于android - 如何实现延迟交付 (XEP-203) Smack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49138262/
我使用 ejabberd 18 作为 xmpp 服务器,要使用实现 mod_push 的推送通知,我们需要将 ejabberd 服务器连接到扩展 ejabberd 18 的应用服务器,是否有可用的插件
我正在尝试使用 XMPPFramework 和 OpenFire 在 iOS 上通过 XMPP 传输文件。我的代码基础来自以下 tutorial .我有一个成功的 TurnSocket (XEP-00
我有点困惑 XEP-0114作品。使用组件为域提供服务是否意味着服务器将不再代表该域执行任何操作,还是仅仅意味着该组件也将被允许为该域上的所有用户提供服务。 更具体地说,是否可以让多个组件服务于同一个
我正在开发一个移动消息应用程序 (ios),我支持注销功能。当用户再次登录时,我想保留最新的对话列表。因为一旦注销,应用程序的本地存储就会被清理。 我正在成功使用 MAM XEP-0313,但我还没有
我正在寻找一种如何通过使用 XEP-0136 标准从谷歌服务器检索聊天消息存档的方法,但我得到这些结果只是试图请求该功能。 要求: 回复:
我知道 DelayInformationManager 类,我知道这是实现此目的的类。但是,我不知道如何使用它,如何指定 Jid 目的地,如何实际发送等等。 谁能给我一个简短的例子来说明它的用法? 最
我正在 iOS 中开发聊天应用程序并使用 openfire xmpp 服务器?我正在尝试使用 XEP-0191 阻止用户:阻止命令但结果出错。 错误 xmlns="jabber:client"type
我想用 java 创建一个简单的 XMPP 客户端,与其他客户端共享他的位置 (XEP-0080)。我已经知道我可以使用 XMPP 的 smack 库并且它支持 XEP-0080 所需的 PEP。有没
需要附上一个0313 XEP (0.2) http://xmpp.org/extensions/attic/xep-0313-0.2.html#sect-idp616432进入 SMACK/ASMAC
我正在尝试使用 Openfire 制作聊天应用程序和 Strophe.js . 我总是阅读有关 XEP 等的信息,它总是将我重定向到 XMPP Extensions我什至不知道如何使用这些扩展。这似乎
libjingle's developer guide相当含糊地提到了 libjingle 的 Jingle 实现与 XEP-0166 规范之间的不兼容性。它还提到它与 XEP-0167、XEP-01
我无法接收 XMPP 消息,我正在使用以下代码: Message mess = new Message() { @Override public S
我正在研究 MUC,为此我想为已加入的房间添加书签。为此,我使用了 xep-0048 扩展名,并且服务器文档显示我创建了相同的 iq 请求,但书签似乎不起作用。 以下是我的智商要求
我从我的服务器获得了可能的字段: You need an x:data capable client to search Search users in vjud.company.com Fill
在我的应用中,我实现了创建 XMPPRoom 和邀请用户。现在,我正在寻找一种方法来存储这些组(我创建的组或我受邀加入的组),以便我可以在需要时轻松地将其检索回我的应用程序。我遇到了 XEP-0048
我正在使用 aSmack。我的应用程序监听聊天室并对消息使用react,但它从不发送消息。如果聊天室保持沉默一段时间然后发送新消息,则该应用程序不会收到更多消息。我研究过,我认为 XEP-0199是这
我想为用户提供使用长按/选择操作一次删除一条或多条消息的功能。 我知道你想知道到目前为止我尝试了什么。但问题是我还没有找到任何关于删除消息的实现。 感谢任何形式的帮助! 最佳答案 您必须从 xmpp
我正在使用 robbiehanson/XMPPFramework对于我当前的项目,我可以向名册中的人发送和接收消息,但现在我必须实现消息传递状态。我知道 xep 是 0184,我也包含在我的项目中,但
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
一旦我有了花名册,我就可以循环遍历所有成员并使用 MamManager 进行查询mamManager.mostRecentPage(jid, QUERY_META_DATA_PAGE_SIZE) 但是
我是一名优秀的程序员,十分优秀!