标签: asmack

Smack(XMPP)聊天应用程序的Android后台服务

我正在使用asmack库实现聊天应用程序.我想启动一个始终运行的服务,其中所有的连接管理任务都要完成,并且应该继续接收传入的数据包并将消息保存在我的sqlite数据库中.当我的应用程序启动时,我希望我的应用程序也会收到通知消息,而后台服务将消息插入sqlite数据库.如何用粘性服务实现这样的结构.是否还需要部分唤醒锁定.因为,有时也会根据特定需求使用http来下载图像.

android xmpp smack asmack

8
推荐指数
1
解决办法
4324
查看次数

使用(a)smack检查XMPP服务器上是否存在用户

我正在使用asmack作为库和Android平台上的聊天应用程序.是否有任何方法,在添加名册中的朋友之前,我可以检查服务器上是否存在该朋友?

xmpp smack asmack

7
推荐指数
1
解决办法
5687
查看次数

Android xmpp MUC设置默认配置

我正在使用Xabber开源项目,并且能够创建一个新组,但它总是说:这个房间从入口锁定,直到配置得到确认.我试图设置默认配置,但它抛出异常:401未经授权.究竟是什么问题.

final MultiUserChat multiUserChat;
        try {
            multiUserChat = new MultiUserChat(xmppConnection, room);
            // CHANAKYA: set default config for the MUC
            // Send an empty room configuration form which indicates that we want
            // an instant room
            try {
                multiUserChat.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
            } catch (XMPPException e) {
                e.printStackTrace();
            }
Run Code Online (Sandbox Code Playgroud)

android xmpp smack asmack

7
推荐指数
1
解决办法
2575
查看次数

使用smack和开放式服务器阻止聊天列表中的用户的问题

我想阻止聊天列表中的某位朋友XMPP.代码工作正常.没有例外,但我无法阻止用户.我正在使用开火服务器.我应该在服务器上做些什么改变?

你们有什么想法吗?

我的代码:

public void XMPPAddNewPrivacyList(Connection connection, String userName) {

    String listName = "newList";

    // Create the list of PrivacyItem that will allow or
    // deny some privacy aspect

    List<PrivacyItem> privacyItems = new Vector<PrivacyItem>();

    PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid.toString(),
            false, 1);
    item.setValue(userName);
    privacyItems.add(item);

    // Create the new list.

    try {
        PrivacyListManager privacyManager = new PrivacyListManager(connection);
        privacyManager = PrivacyListManager
                .getInstanceFor(connection);
        privacyManager.createPrivacyList(listName, privacyItems);

    } catch (XMPPException e) {
        System.out.println("PRIVACY_ERROR: " + e);
    }
}
Run Code Online (Sandbox Code Playgroud)

android xmpp smack asmack

7
推荐指数
2
解决办法
1764
查看次数

ASmack - 从哪里获取ChatManager?

我正在尝试在Android 4.2.2上使用sSck-8-4-rc2为学校项目制作一个支持XMPP的小型聊天应用程序,并且我在获取ChatManager对象来处理传入消息时遇到问题.

到目前为止我见过的每个例子都有

ChatManager manager = connection.getChatManager();
Run Code Online (Sandbox Code Playgroud)

但是,似乎在开发过程中的某个时刻,函数getChatManager()被删除或从类中替换XMPPConnection(或者XMPPTCPConnection,因为前者似乎已被弃用),我无法找到任何文档或示例,这些文档或示例可以为我提供任何指示我能得到的替代品.

我尝试使用类中的构造函数ChatManager.它似乎有一个构造函数,虽然是私有的,因此我无法创建该对象.我假设它打算成为一个单身人士,但我还没有找到一种方法来实现它.

有人知道这个功能移到哪里了吗?

android asmack

7
推荐指数
1
解决办法
1286
查看次数

如何使用asmack android从Openfire中检索一对一的聊天记录

请问有人能告诉我使用asmack库和XMPP协议从openfire服务器到android客户端应用程序检索聊天记录的确切代码吗?在我的openfire服务器中,我启用了合并的监控服务/开放存档服务以及成功存储到数据库中的所有消息.但我不知道这些消息(聊天记录)如何检索到我在ANDROID中构建的客户端应用程序.我需要什么类型的聊天是一对一的用户聊天(不是群聊).

我成功ED,这是让组聊天记录与帮助这个,但我想找回一对一的聊天记录

如果有人能给我写一个代码,我将非常感激.

谢谢!

android xmpp openfire asmack

7
推荐指数
1
解决办法
2135
查看次数

在Android中使用smack 4.1获取在线用户(名册条目)

我一直试图在Android中使用smack 4.1 beta 2来获取名单条目.

https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-UpgradeGuide 来自以上链接的报价..

"Roster现在遵循Manager模式(使用Roster.instanceFor获取实例,不再使用XMPPConnection.getRoster)"

首先,我无法获得"名册"对象,我导入的库可能没有该包,或者我在这里想念任何库?

我使用上面链接中提到的所有库.

任何人都可以帮助我使用smack 4.1获取名册条目吗?

谢谢

android xmpp smack asmack

7
推荐指数
1
解决办法
7899
查看次数

发件人离线时如何发送XMPP消息?

我正在使用aSmack和Openfire进行聊天应用.我能够很好地发送和接收消息.当收件人离线时,Openfire支持离线邮件传输,通过保持消息直到他联机.

但是当发件人离线或他的互联网在通信之间掉线时该怎么办?

是否有任何api由aSmack/Smack提供,它会在互联网恢复之前保留消息?

或者我应该通过SQLite发送消息?

android offline xmpp sender asmack

7
推荐指数
1
解决办法
2139
查看次数

使用XMPP创建组时出现"XMPPException $ XMPPErrorException:XMPPError:service-unavailable - cancel"(4.1.3)

我在使用XMPP(4.1.3)创建聊天组时遇到问题.

我的代码是

       try{

            // Get the MultiUserChatManager
            MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(ClosrrService.xmppConnection);

            Log.e("Connection  : ", ClosrrService.xmppConnection.toString());

            // Get a MultiUserChat using MultiUserChatManager
            MultiUserChat muc = manager.getMultiUserChat("dayaroom@conference."+Constants.HOST);

            // Create the room and send an empty configuration form to make this an instant room
            muc.create("testbotdaya");

            muc.sendConfigurationForm(new Form(DataForm.Type.submit));


        }catch (Exception e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

在上面的代码我得到例外muc.create("testbotdaya");,异常是

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: service-unavailable - cancel
 W/System.err? at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
 W/System.err? at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:311)
 W/System.err? at org.jivesoftware.smackx.muc.MultiUserChat.createOrJoin(MultiUserChat.java:400)
 at org.jivesoftware.smackx.muc.MultiUserChat.createOrJoin(MultiUserChat.java:376)
 W/System.err? at org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:354)
 W/System.err? at com.rappier.closrr.chat.grpupchat.CreateGroupActivity.createGroup(CreateGroupActivity.java:82)
 W/System.err? at com.rappier.closrr.chat.grpupchat.CreateGroupActivity.onClick(CreateGroupActivity.java:64)
Run Code Online (Sandbox Code Playgroud)

请帮我.提前感谢.

android xmpp ejabberd asmack

7
推荐指数
1
解决办法
857
查看次数

在Openfire Server中使用Smack(Android)加载Vcards

我正在Android平台上使用XMPP协议和Openfire服务器实现消息传递应用程序.我需要保存并加载自己的Vcard和其他用户vcard.目前,我设法将我的vCard保存在服务器上并可以再次加载它.问题在于其他用户的Vcards,服务器总是返回XMPPError:功能未实现 - 取消.

我用这个库:

compile 'org.igniterealtime.smack:smack-android:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-tcp:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-extensions:4.1.2-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)

显示代码:

保存我自己的Vcard(工作正常).

VCardManager vCardManager = VCardManager.getInstanceFor(connection);
VCard vCard;
vCard = vCardManager.loadVCard();
vCard.setNickName("User name");
URL urldefault = new URL("Avatar URL");
InputStream stream = urldefault.openStream();
byte[] avatar1 = readBytes(stream);
vCard.setAvatar(avatar1, "avatar1/jpg");
vCard.setEmailHome("user email");
vCard.setPhoneHome("mobile", "888888888");
vCardManager.saveVCard(vCard);
Run Code Online (Sandbox Code Playgroud)

加载我自己的Vcard(工作正常)

VCard vCard = null;
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
vCard = vCardManager.loadVCard();
Run Code Online (Sandbox Code Playgroud)

问题出在这里.加载其他用户Vcard:

VCardManager vCardManager = VCardManager.getInstanceFor(connection);
boolean isSupported = vCardManager.isSupported(user);
if (isSupported)  // return true
    vCard = vCardManager.loadVCard(user);
Run Code Online (Sandbox Code Playgroud)

加载Vcard的用户名是正确的.

有任何想法吗?

提前致谢.

android xmpp openfire smack asmack

6
推荐指数
1
解决办法
2352
查看次数

标签 统计

asmack ×10

android ×9

xmpp ×9

smack ×6

openfire ×2

ejabberd ×1

offline ×1

sender ×1