标签: smack

我可以通过Smack获取我朋友列表中的在线用户吗?

我可以通过Smack API获取我朋友列表中的在线用户吗?可能吗?

我正在开发用户之间聊天的应用程序.我已经成功创建了聊天应用程序示例,只需输入朋友的名字并发送聊天,但现在我想要在线好友列表.

api android smack

9
推荐指数
2
解决办法
1万
查看次数

使用OAuth 2.0与SMACK Java库进行X-FACEBOOK-PLATFORM身份验证

请先在这里发帖,请保持温柔.我正在使用Smack库构建一个Facebook聊天客户端.我正在使用X-FACEBOOK-PLATFORM方法,以免保存任何密码.我使用oauth 1.0正常工作,并希望将其更改为2.0,导致10月1日截止日期; p.根据我的理解,为了迁移到2.0,我必须做的唯一事情是删除"sig"和"session_key"参数并添加"access_token"参数,但我得到的是"SASL身份验证X-FACEBOOK- PLATFORM失败:未经授权:".我正在使用这个自定义SASLMechanism类:

package smackresearching;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

import javax.security.sasl.Sasl;

import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.sasl.SASLMechanism;
import org.jivesoftware.smack.util.Base64;

public class SASLXFacebookPlatformMechanism extends SASLMechanism {

    public static final String NAME = "X-FACEBOOK-PLATFORM";
    private String apiKey = "";
        private String accessToken = "";


    /**
     * Constructor.
     */
    public SASLXFacebookPlatformMechanism(SASLAuthentication saslAuthentication) {
            super(saslAuthentication);
    }

    @Override
    protected void authenticate() throws IOException, XMPPException {
        // Send the authentication to the server
        getSASLAuthentication().send(new AuthMechanism(getName(), ""));
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

xmpp smack oauth-2.0 facebook-chat x-facebook-platform

9
推荐指数
1
解决办法
4034
查看次数

如何在asmack,android中使用户在线或离线

可能重复:
XMPP aSmack - 如何获取当前用户状态(离线/在线/离开/等)?

我正在开发基于asmack lib的Android上的聊天应用程序.我在ListView上显示所有用户,但我使用图像显示在线/离线用户.但它只返回离线图像,即使用户在线,这里是我的代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.buddies);

    Controller.getInstance().roster = Controller.getInstance().connection.getRoster();
//  ArrayList<Buddy> buddies = new ArrayList<Buddy>();
    Collection<RosterEntry> entries = Controller.getInstance().roster.getEntries();
    Controller.getInstance().buddyList = new Buddy[entries.size()];

    int i = 0;

    for (RosterEntry r : entries) {
        Buddy bud = new Buddy();
        VCard card = new VCard();
        try {
            ProviderManager.getInstance().addIQProvider("vCard",
                    "vcard-temp", new VCardProvider());
            card.load(Controller.getInstance().connection, r.getUser());
        } catch (XMPPException e) {
            Log.e("ChatOnAndroid", e.getMessage() + " " + r.getUser() + " "
                    + e.getLocalizedMessage());
        }
        bud.jid …
Run Code Online (Sandbox Code Playgroud)

android openfire smack asmack

9
推荐指数
1
解决办法
8077
查看次数

使用smack API发送和接收消息

我已经在本地计算机上设置了我的开火(jabber服务器),其中包含两个用户testuser1和testuser2.使用Spark客户端,两个用户都可以毫无问题地进行聊天,这很不错.

openfire IP -192.168.1.65

我想使用smack API(3.3.0)发送和接收消息.我已经写了发送方端代码来发送消息(使用testuser1)并在testuser2端接收到Spark客户端(带有testuser2)消息进行测试,但是当我尝试使用java代码接收发送方消息时,我无法接收这些发布消息.

Sender.java

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.MessageListener;

public class Sender 
{

    public static void main(String a[]) throws XMPPException, InterruptedException
    {
         XMPPConnection connection = new XMPPConnection("192.168.1.65");  
         System.out.println(connection);
         connection.connect();
         connection.login("testuser1", "test123");



         Chat chat = connection.getChatManager().createChat("testuser2@sameek", new MessageListener() {

             public void processMessage(Chat chat, Message message) {
                 // Print out any messages we get back to standard out.
                 System.out.println("Received message: " + message);
             }
         });
         chat.sendMessage("Howdy test1!");

         while (true) {
        Thread.sleep(50);
    }





    }

} …
Run Code Online (Sandbox Code Playgroud)

java xmpp openfire smack

9
推荐指数
2
解决办法
2万
查看次数

OpenFire Server中用户的JID应该是什么?

嗨,我是新手:我已经设置了一个Openfire服务器并使用Spark IM来测试它.但对于Android应用程序代码,会话中用户的JID应该是什么:

我尝试过用户名@ ip_address,用户名@ ip_address/Smack,用户名@ ip_address/Spark.请参阅下面的图片并提供帮助:

在此输入图像描述

什么是这个.please帮助的解决方案.

java android xmpp openfire smack

9
推荐指数
1
解决办法
5760
查看次数

如何在XMPP中获取键入状态通知

我正在尝试设置XMPP聊天应用程序.现在我可以在gmail和gmail之间发送消息.我想要键入通知,例如用户键入的内容用户正在键入,,,就像那样.我正在使用主类和Message侦听器类.

主类

public class XMPPChatDemoActivity extends Activity {

    //Object of Custom class
    MessageListener messageListener = new MessageListenerImpl();

    private void setConnection(XMPPConnection connection) {
        this.connection = connection;

        ChatManager chatmanager = connection.getChatManager();
        Chat newChat = chatmanager.createChat("user@gmail.com", messageListener);
        try {
            newChat.sendMessage("Howdy!");
        }
        catch (XMPPException e) {
            System.out.println("Error Delivering block");
        }
Run Code Online (Sandbox Code Playgroud)

消息监听器类

public class MessageListenerImpl implements MessageListener , ChatStateListener{

    @Override
    public void stateChanged(Chat arg0, ChatState arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void processMessage(Chat arg0, Message arg1) { …
Run Code Online (Sandbox Code Playgroud)

android xmpp smack

9
推荐指数
0
解决办法
5422
查看次数

如何实现消息读取状态,如whatsapp蓝色刻度?

我正在开发一个应用程序,聊天是一个模块,聊天我正在使用xmpp.当我发送消息时,我使用DeliveryReceiptManager获取该消息传递状态.

DeliveryReceiptManager.getInstanceFor(connection).enableAutoReceipts();
DeliveryReceiptManager.getInstanceFor(connection).addReceiptReceivedListener(new ReceiptReceivedListener()
{
        @Override
        public void onReceiptReceived(String arg0, String arg1, String arg2)
        {
            Log.v("app", arg0 + ", " + arg1 + ", " + arg2);
        }
});
Run Code Online (Sandbox Code Playgroud)

但我需要证明该消息是用户READ或不像whatsApp蓝色tickmark,任何人都可以帮助我,我在这里被击中.如何实现此消息读取概念.

提前致谢.

android xmpp smack asmack

9
推荐指数
1
解决办法
1万
查看次数

SMACK XEP-313实施

有必要将0313 XEP(0.2)http://xmpp.org/extensions/attic/xep-0313-0.2.html#sect-idp616432附加 到SMACK/ASMACK中.我为此创建了PacketExtension.

    public class Archive313 implements PacketExtension {
    static final public String NAMESPACE = "urn:xmpp:mam:tmp";
    static final public String ELEMENT = "result";
    private String Id;
    private String Queryid;
    private String Stamp;
    private String To;
    private String From;
    private String Type;
    private String Body;

    public Archive313(String id, String queryid, String stamp, String to, String from, String type, String body) {
        Id = id;
        Queryid = queryid;
        Stamp = stamp;
        To = to;
        From = from;
        Type = type; …
Run Code Online (Sandbox Code Playgroud)

java android xmpp smack asmack

9
推荐指数
1
解决办法
1174
查看次数

smack 4.2.0出错:在AAAA中产生了错误响应NX_DOMAIN

我启动openFire并用spark测试它一切正常但是当我尝试在android studio中连接smack 4.2.0时出现此错误:

Ljavax /命名/目录/ InitialDirContext;

我的依赖是这样的:

编译"org.igniterealtime.smack:smack-java7:4.2.0"compile"org.igniterealtime.smack:smack -tcp:4.2.0"compile"org.igniterealtime.smack:smack-im:4.2.0"compile" org.igniterealtime.smack:smack-extensions:4.2.0"compile"org.igniterealtime.smack:smack-android-extensions:4.2.0"compile"org.igniterealtime.smack:smack-bosh:4.2.0"

当从依赖项中删除这个:"编译org.igniterealtime.smack:smack-java7:4.2.0"并添加它:compile"org.igniterealtime.smack:smack-android:4.2.0"我的依赖项变成这样:

编译'com.android.support:appcompat-v7:24.0.0'compile"org.igniterealtime.smack:smack-android:4.2.0"compile"org.igniterealtime.smack:smack -tcp:4.2.0"compile" org.igniterealtime.smack:smack-im:4.2.0"compile"org.igniterealtime.smack:smack-extensions:4.2.0"compile"org.igniterealtime.smack:smack-android-extensions:4.2.0"compile" org.igniterealtime.smack:咂嘴波什:4.2.0"

我收到此错误:

org.jivesoftware.smack.SmackException $ ConnectionException:以下地址失败:'192.168.209.2:5222'失败,原因是:de.measite.minidns.hla.ResolutionUnsuccessfulException:要求192.168.209.2.IN A产生错误响应NX_DOMAIN,'192.168.209.2:5222'失败,原因是:de.measite.minidns.hla.ResolutionUnsuccessfulException:要求192.168.209.2.在AAAA中产生了错误响应NX_DOMAIN

当我尝试conn.connect()时出现错误的代码部分是这样的:

XMPPTCPConnectionConfiguration config = null;  
            try {  
                config = XMPPTCPConnectionConfiguration.builder()  
                        .setUsernameAndPassword("admin", "thepass")  
                        .setXmppDomain("192.168.1.3")  
                        .setHost("192.168.209.2")  
                        .setPort(5222)  
                        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)  
                        .build();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
                AbstractXMPPConnection conn1 = new XMPPTCPConnection(config);  
                conn1.setReplyTimeout(60000);  
                conn1.setPacketReplyTimeout(60000);  
                conn1.connect();  
Run Code Online (Sandbox Code Playgroud)

android chat xmpp smack

9
推荐指数
2
解决办法
2966
查看次数

失败是因为:de.measite.minidns.hla.ResolutionUnsuccessfulException:要求xxxx.在AAAA中产生了错误响应NX_DOMAIN

我将smack升级到4.2.0后,我遇到了连接问题.

The following addresses failed: 'xxxx:5222' failed because: 

de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for xxxx.    IN  A yielded an error response NX_DOMAIN, '52.90.233.38:5222' failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for xxxx. IN  AAAA yielded an error response NX_DOMAIN
Run Code Online (Sandbox Code Playgroud)

在连接配置构建器中设置主机时会发生此问题.

例如:

.setHost(ServiceConstants.CHAT_SERVER)
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide

这是我的最终配置,它在Davood Falahati帮助之后起作用!

InetAddress inetAddress = InetAddress.getByName(ServiceConstants.CHAT_SERVER);
            XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder()
                    .setXmppDomain(JidCreate.from(ServiceConstants.CHAT_SERVER).asDomainBareJid())
                    .setPort(5222)
                    .setHostAddress(inetAddress)
                    .setDebuggerEnabled(true)
                    .setSendPresence(true)
Run Code Online (Sandbox Code Playgroud)

android xmpp smack

9
推荐指数
1
解决办法
2365
查看次数