我在使用Smack和Openfire发送/接收消息时遇到了麻烦。目前我的设置涉及两台电脑。两台计算机都运行一个启动该程序的android模拟器。该程序首先启动登录活动,然后启动聊天界面活动。聊天界面目前没有做任何事情;一旦ChatInterface活动启动,就会自动发送一条消息。
一台计算机(笔记本电脑)就像一台服务器,桌面计算机连接到笔记本电脑服务器(Openfire)。查看笔记本电脑上的Openfire用户摘要,两个用户似乎都可以随时聊天。但是,当它接收消息的时间没有出现时。消息不会打印在视图对象(如ListView)上,而是打印在日志上。
以下是笔记本电脑代码:
sum('event').over(Window.orderBy('seq'))
以下是桌面代码:
+---+-----+-----+
|seq|event|state|
+---+-----+-----+
| 1 | 1 | 1 |
| 2 | 0 | 1 |
| 3 | 1 | 1 |
| 4 | -1 | 0 |
| 5 | 0 | 0 |
| 6 | -1 | 0 |
| 7 | 1 | 1 |
+---+-----+-----+
由于logcat中没有打印任何内容,因此都没有调用processMessages方法。
我不太确定问题是什么。一些Smack文档似乎已经过时,并且API没有很多很好的资源。有没有人知道可能是什么问题?
答案 0 :(得分:0)
我看到很多问题,我建议更好地阅读这些文件。
我发现了什么:
XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
configBuilder.setUsernameAndPassword(params[0], params[1]);
configBuilder.setServiceName("Openfire");
configBuilder.setHost(Host);
configBuilder.setPort(port);
configBuilder.build();
ServiceName
这是您服务器的名称,默认情况下 它是安装Openfire的机器名称。如果您没有指定此名称的特定配置,则会遇到麻烦。在管理员控制面板上检查正确的名称(Openfire日志会说明它在哪里听...类似于yourmachinename:9090
)
将连接功能与登录功能分开会好得多。
我建议删除setUsernameAndPassword并在params[0]
调用中使用params[1]
和connection.login()
。
你错过了资源(这是一个像“ Spark ”,“ Smack ”,“ Android ”这样的字符串,“ MyXmppClient“)如果你错过了它,有一些默认的配置和问题。
所以我建议改变,例如,改变:
connection.login(param[0],param[1],"MyAndroidApp");
用户名必须小写,Openfire在他的代码中有一些防御性的toLowerCase(),但最好避免使用大写字母。 所以一定要使用小写的JID。
LoveJack@yahoo.com 必须是:lovejack@yahoo.com
Howerver,这不是关于电子邮件:您需要 JID ,因此它不是“yahoo.com”而是@yourservername
(同一期ServiceName I)之前谈到过。)
您正在尝试在名为“yahoo.com”的XmppServer上创建与“LoveJack”的聊天,我不认为这是您的目标。
可能你没有正确注册你在服务器上使用的用户,试着检查一下(如果在雅虎谈论你想要什么,也许你必须阅读like this)