smack消息发送状态

Hos*_*ord 3 android openfire smack

我正在使用smack和openfire在android中创建聊天应用程序.对于消息状态我在其他客户端中传递和显示消息没有问题(仔细检查).我将发送一个简单的json消息,如bellow给发送者:{"delivery":timestapmp}并解析它并仔细检查低于之前发送的时间戳的消息.问题是关于发送状态(一次检查).当我发送消息时,服务器没有响应消息发送的任何内容.是否有可能在smack中发送带有来自服务器回调的消息.如果可能的话,是否可以在回调响应中发送时间服务器.谢谢 .

Mou*_*esh 7

private void acknowledgementFromServer(final Message message) throws StreamManagementException.StreamManagementNotEnabledException {
        if (connection != null && connection.isSmEnabled()) {
            connection.addStanzaIdAcknowledgedListener(message.getStanzaId(), new StanzaListener() {
                @Override
                public void processStanza(Stanza packet) throws SmackException.NotConnectedException, InterruptedException {

                        MessageAsyncTask task = new MessageAsyncTask(packet.getStanzaId(), MSG_STATUS_SENT);
                        task.execute();

                }
            });
        }
Run Code Online (Sandbox Code Playgroud)

嘿,你可以这样做..每次你通过在上面的方法中传递该消息作为参数发送消息时调用方法

注意:应启用流管理以使其正常工作,可以如下所示:

DeliveryReceiptManager.setDefaultAutoReceiptMode(DeliveryReceiptManager.AutoReceiptMode.always);
        ProviderManager.addExtensionProvider(DeliveryReceipt.ELEMENT, DeliveryReceipt.NAMESPACE, new DeliveryReceipt.Provider());
        ProviderManager.addExtensionProvider(DeliveryReceiptRequest.ELEMENT, DeliveryReceipt.NAMESPACE, new DeliveryReceiptRequest.Provider());
Run Code Online (Sandbox Code Playgroud)