默认
发表评论 12
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已解决] 求助MobileIMSDK安卓消息过长导致无法收到的问题
问题描述:安卓端接受不到长文本内容场景: 安卓端长文本发送出去后,服务端正常接收到数据,然后转发IOS端正常接收到,但是转发给安卓客户端就转发不出去


内容超过512字符长度后就无法接收到了

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:开源轻量级IM框架 MobileIMSDK v5.0 已发布!下一篇:[已回复] 求助我Android端切换账号代码可能用的不对,导致间隔45秒会断开重连

本帖已收录至以下技术专辑

推荐方案
评论 12
你的消息最大长度,估计有多长?
引用:JackJiang 发表于 2020-09-15 21:46
你的消息最大长度,估计有多长?

消息体 1024字符
引用:刘贵林 发表于 2020-09-15 21:56
消息体 1024字符

是安卓sdk限制长度了吗,ios端都没这个问题
引用:刘贵林 发表于 2020-09-15 21:57
是安卓sdk限制长度了吗,ios端都没这个问题

不用纠结,这是UDP协议的短板,有兴趣可以读一下这篇文章《UDP中一个包的大小最大能多大》。

不过,好消息是,MobileIMSDK v5.0版已经支持TCP协议了。你们可以将MobileIMSDK升级到v5.0,下载地址是:https://github.com/JackJiang2011/MobileIMSDK/releases/tag/5.0

以下是随手测试的结果,这是一段1600多中文字符(相当于3000多字节)的消息,在MobileIMSDK的TCP协议下,正常收发,没有问题:
[已解决] 求助MobileIMSDK安卓消息过长导致无法收到的问题_aaa.jpg

[已解决] 求助MobileIMSDK安卓消息过长导致无法收到的问题_bbb.jpg
如果你要升级到MobileIMSDK v5.0,因为v5.0为全新版本,重构了一些类名、方法名,升级会报错,你可以单独再开一贴,我会详细回复你如何解决。

不过,升级也不复杂,因为不存在方法或类的增加或删除,只是优化了名字而已,旧版里的某些类、方法名改成新版,即可默认升级,很简单。
引用:JackJiang 发表于 2020-09-15 22:36
如果你要升级到MobileIMSDK v5.0,因为v5.0为全新版本,重构了一些类名、方法名,升级会报错,你可以单独再 ...

安卓端升级了,服务端和ios端需要升级吗?
引用:刘贵林 发表于 2020-09-15 22:49
安卓端升级了,服务端和ios端需要升级吗?

一起都升级。
引用:JackJiang 发表于 2020-09-16 10:47
一起都升级。

问题已经解决,整体一起升级5.0
引用:刘贵林 发表于 2020-09-16 11:50
问题已经解决,整体一起升级5.0

嗯嗯。MobileIMSDK v5的TCP协议版,理论上的最大消息长度可以是2的32次方,无敌!

原本是想用两个字节,想想还是算了,直接用4个字节存。

具体在代码中设置MobileIMSDK的最大传输字符数,可以按以下的方法设置。

Andriod端设置方法:
[已解决] 求助MobileIMSDK安卓消息过长导致无法收到的问题_a.png

iOS端设置方法:
[已解决] 求助MobileIMSDK安卓消息过长导致无法收到的问题_i.png

Server端设置方法:
[已解决] 求助MobileIMSDK安卓消息过长导致无法收到的问题_s.png

点评

JackJiang  说:
最佳答案!  (3 年前)
这个问题我也遇到了.抛了com.google.gson.stream.MalformedJsonException异常;
LocalUDPDataReciever里面
Protocal pFromServer =  ProtocalFactory.parse(packet.getData(), packet.getLength());转Protocal的时候异常;
主要每次都说为什么ios可以android不行,这才是蛋疼的;
我们改了很多东西,如果升级到5.0,不知道会影响到哪些
楼主你的客户端是TCP和UDP混着用的吗?
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部