使用Smack从2个不同的Android设备登录相同的jabber帐户

使用Smack从2个不同的Android设备登录相同的jabber帐户,第1张

概述我在Android上开发了一个应用程序,它利用SmackAPI连接到XMPP服务器.在这个应用程序中,我硬编码用户登录信息,即用户名和密码.xmpp.login(“admin”,“tigase”);我收到来自不同用户的数据包PacketFilterfilter=newAndFilter(newPacketTypeFilter(Message.class

我在Android上开发了一个应用程序,它利用Smack API连接到XMPP服务器.在这个应用程序中,我硬编码用户登录信息,即用户名和密码.

xmpp.login(“admin”, “tigase”);

我收到来自不同用户的数据包

PacketFilter filter = new
AndFilter(new
PacketTypeFilter(Message.class),
new FromContainsFilter(“ameya@mwbn43-1”));

现在我面临的问题是,当我在2个不同的AndroID设备上运行相同的应用程序时,一个设备会覆盖其他设备凭据,因​​此当我尝试发送数据时,只有其中一个获得它.
AFAIK在普通的Google聊天中,用户可以从两个不同的地方登录同一个帐户,并且可以同时在这两个地方接收消息.

谁能告诉我可能是什么问题?它与Smack API有什么关系?

谢谢,

Ameya

解决方法:

您需要做的是在登录时设置不同的资源

xmpp.login("admin", "tigase", "a random string here");

资源在概念上类似于TCP端口.请参阅此link.资源字符串用于区分设备登录到同一帐户的方式,即.在桌面上,资源可能是AndroID上的“桌面”和“androID”.但在您的情况下,您有2个AndroID设备,因此您无法预设资源.您可能希望在AndroID设备上使用唯一标识符字符串,例如帐户名称或IMEI号码.

使用资源字符串,您可以发送给特定用户,例如

admin@server/12345 

其中12345是您的资源或

admin@server

所有登录用户.

如果未在应用程序中使用资源字符串,则可以使用StringUtils.randomString(20)生成20个字符的随机字符串. StringUtils可以在Smack包中找到.

总结

以上是内存溢出为你收集整理的使用Smack从2个不同的Android设备登录相同的jabber帐户全部内容,希望文章能够帮你解决使用Smack从2个不同的Android设备登录相同的jabber帐户所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1120097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存