这是博主在csdn上的第一篇博客,好激动,有点小紧张,O(∩_∩)O哈哈~
好吧,直奔主题 :
在openfire上新建两个用户,账号密码随便写,注意账号里面最好不要有@serviceHost的后缀,因为博主不是这样弄的,也不清楚。嘿嘿嘿~ 还有密码最好和账号一样,因为博主为了偷懒省去了输入密码。
账号设置好了后,主要互相添加为好友,并设置为both。如图:
登陆的时候你要输入账号为xxxx@serviceHost
登陆后,输入对方的账号 xxxx@serviceHost点chat就可以给对方法信息了,支持离线消息。(PS:为什么要加serviceHost,博主认为是为了区别你在哪天服务器上登陆)
状态查看有点纠结,就是你输入对方地址点chat后,才会监视对方的状态,如果对方已经在线,则不会亮绿灯,因为对方在线状态没有改变,对方下线上线后就会亮了。有点纠结。这就不上图了。。
文件传输也要先输入xxxx@serviceHost/Resource,请注意必须这里不许要输入Resource,因为我在后面给自动加了"/Smack",为什么要有Resource,这是用来区分你要发送的文件是传到那台设备上。去这个路径找传来的文件。
在学习过程中,博主碰到了很多问题:
问题1:在登陆后sendPresence()的时候设置Presence.Type.availebal、Presence.Mode.availebal,自己状态改变对方监听到时,就是roster.getPresence(user@serviceHost)得到的Mode是null,你没看错确实是null。但是,注意但是为设置为chat的就能得到Mode为chat。
问题2:博主折腾文件传输3天,上网搜各种解决办法,都不行。只能自己硬着头皮看源码,发现可能和Socks5Proxy设置有关系,顺藤摸瓜,偶然间发现了SmackAndroid.init(context)方法,天哪,就这么一句代码就吧文件传输501错误给解决了。看了init里面的代码,也就是添加了4句关于ibb的配置代码。虽然解决了文件传输,但是还是无法使用byteStreams协议来传输文件,from端host=127.0.0.1 to端则是host=null,可能和代理有关。
欢迎大家加群330112289来一起讨论和学习。
资源地址:点击打开链接
分要的有点高,防止伸手党~~
330112289330112289330112289