1.连接超时:
除了网络故障(有些公司的服务器拦截外部ip访问的),还可能是你的openfire服务器默认了安全链接,把你的请求过滤了。
2.:Not connected to server
public static void disConnection() {
if (null != con) {
con.disconnect();
con = null;
}
}
会释放连接的资源,登录状态改为离线。
然后更改接受离线消息,把它注释掉,这样就可以了。
/**
* 离线消息
*/
private void getOffLine() {
// new Thread() {
// public void run() {
// List<org.jivesoftware.smack.packet.Message> msglist = ConnecMethod
// .getOffLine();
// for (org.jivesoftware.smack.packet.Message msg : msglist) {
// // 将离线消息保存到数据库
// // ConnecMethod.saveTalkMsgSQL(msg.getFrom(), msg.getTo(),
// // msg.getBody());
// }
// };
// }.start();
}
3.用手机端和pc端spark发送的资源名是不同的:
手机端: 服务器 +"Smack"
spark:服务器+”spark“+版本号
填写错误的话,也许就不能收到消息了。
4.接受在线消息的监听:
ChatManager cm = XmppTool.getConnection().getChatManager();
cm.addChatListener(new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean able) {
chat.addMessageListener(new MessageListener() {
@Override
public void processMessage(Chat chat2, Message message) {
// example: ssssadmin@coboqo/Spark 2.6.3
// 同时会拦截离线的消息
Log.d("connectMethod:getOnLine()", message.getBody()
+ message.getFrom() + message.getTo());
saveTalkMsgSQL(message.getFrom(), message.getTo(),
message.getBody());
sendBroadcastMsg(context, message.getFrom());
}
});
}
});
其实,也可以收到离线消息,如果你在接受离线消息处理的时候,发现你收到了两次同样的消息,那么应该就是这个问题了。
5.如果在模拟器和真机之间测试传输文件没有问题,而在真机之间传输文件出现问题,先查看下你的真机是否都是连接的同一个wifi。如果是的话,你尝试下载不同的wifi下,真机之间传输文件吧。