默认
发表评论 10
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK的安卓客户端获取的当前用户ID会变???
通过ClientCoreSDK实例获取getCurrentUserId,
不知道是什么原因,莫名其妙会改变成另一个在线ID;
此ID是从数据库获取的当前用户的唯一值;
登陆后此用户没有做注销操作,另一个用户也没有;
求帮忙分析可能的原因;

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

标签:MobileIMSDK
上一篇:[已回复] 关于MobileIMSDK与其他推送框架的互通问题下一篇:[已回复] MobileIMSDK压力测试报告中,是如何测试udp性能的?
推荐方案
评论 10
MobileIMSDK的user_id是实时分配的,当你的客户端掉线后下次再连上时肯定就变了的。
它没有理由不变啊哥。
没有注销操作但id变了,这意味着你的app在运行过程中掉过线了,作为移动端来说这很正常,而即时通讯框架的作用就在于掉线后能无感地自动连接上。
引用:JackJiang 发表于 2016-05-31 16:04
MobileIMSDK的user_id是实时分配的,当你的客户端掉线后下次再连上时肯定就变了的。
它没有理由不变啊哥。 ...

这个ID是从数据库获取的用户ID,是固定不会变的
跟用户一一对应的
现在问题是,我两个手机,一个登陆A,id = 1;一个登陆B,id = 2
但是不知道为什么,偶尔会出现两个用户都变成id=2

而且,就算是断线重连,理论上也是应该用原有的ID、账号密码,
再次登陆,获得的ID在理论上应该还是 id = 1;
为什么会变成另一个手机的id?
你看服务端开发指南里的附录2:http://www.52im.net/thread-63-1-1.html

MobileIMSDK的默认user_id生成是一个自增的整数id,这个id用于即时通讯框架内部算法区分唯一性,跟你上层的登陆名是两码事,你上层即使用同一个用户名登陆,每次分配到的id也还依然是不一样,这种用途目的是防止你实际应用时一个账号多个地方登陆依然能正常通信,不致于影响底层即时通讯框架而已。这相当于是让你的账号机制更灵活:
[已回复] MobileIMSDK的安卓客户端获取的当前用户ID会变???_QQ20160531-0.png
引用:JackJiang 发表于 2016-05-31 16:15
你看服务端开发指南里的附录2:http://www.52im.net/thread-63-1-1.html

MobileIMSDK的默认user_id生成 ...

但是我最开始就是不想多地登陆,仅能登陆一个设备;
所以这里获取的ID是固定对应每个用户的;
而且,就算不固定的;
也不能解释会出现两个相同ID的情况啊
两个相同的id是绝不可能出现的,你有改自定义user_id的生成方法吗?就是我上面贴出来的那段。
引用:JackJiang 发表于 2016-05-31 16:19
两个相同的id是绝不可能出现的,你有改自定义user_id的生成方法吗?就是我上面贴出来的那段。

改过了的,是从数据库获取的指定用户对应的ID
你可以这样去调试:
你在这个id生成的方法里把日志打出来,这样你就能即时看到你的登陆用户名跟你的代码取出来的id是否对的上了。我怀疑你的代码有问题,或许是sql写的不对。

你可以把这一段的代码贴出来看看。理论上id生成在MobileIMSDK里是非常单纯和简单的一种机制,不容易出问题。
引用:JackJiang 发表于 2016-05-31 16:24
你可以这样去调试:
你在这个id生成的方法里把日志打出来,这样你就能即时看到你的登陆用户名跟你的代码取 ...

服务端是另一个人写的,等他出差回来,我跟他说下吧,看看到底是哪里的问题;
先谢了;
引用:Eagle0922 发表于 2016-05-31 16:27
服务端是另一个人写的,等他出差回来,我跟他说下吧,看看到底是哪里的问题;
先谢了;

十有八九是他的问题,相信我 ,而且也不用着急,即使有问题也是弱智问题,很容易解决的。你这是把MobileIMSDK用在一个全功能IM里,还是企业OA啥?
引用:JackJiang 发表于 2016-05-31 16:28
十有八九是他的问题,相信我 ,而且也不用着急,即使有问题也是弱智问题,很容易解决的。你这是把Mob ...

。。。。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部