Android Smack MessageEventManager 未编译

Posted

技术标签:

【中文标题】Android Smack MessageEventManager 未编译【英文标题】:Android Smack MessageEventManager not compiling 【发布时间】:2015-06-16 23:12:45 【问题描述】:

我正在使用带有 openfire 服务器的 smack API 来制作一个 android 应用程序。我正在尝试在我的应用程序中实现 MessageEventManager 和 MessageEventProvider,因此它会告诉我消息是否已传递,尽管当我尝试将其声明为 MessageEventManager 时,它没有编译并告诉我创建该类,我能做什么?我的 gradle 中有以下依赖项:

dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'org.igniterealtime.smack:smack-android:4.1.0-rc1'
    compile 'org.igniterealtime.smack:smack-tcp:4.1.0-rc1'
    compile 'org.igniterealtime.smack:smack-im:4.1.0-rc1'
    compile 'org.igniterealtime.smack:smack-extensions:4.1.0-rc1'
    compile 'org.igniterealtime.smack:smack-android-extensions:4.1.0-rc1'

我需要额外的吗?我会很感激任何帮助谢谢。

图片:

【问题讨论】:

你能发布日志吗?出现的错误文本? @TommySM 它没有出现错误但是当我在我的文件中声明它时它没有告诉我导入类它只是说创建类,我附上了一张图片。 @TommySM 你能帮我解决这个问题吗? link 【参考方案1】:

好吧,我可能错了,但它似乎不包含在 Smack4.1 中,我无法判断它是否已被弃用,因为我没有在弃用列表中看到它,并且文档存在 here和here for the parent class。

但是...我确实找到了 Smack 的作者 this SO answer,它清楚地说明了这一点

SMACK 中的消息事件是通过现已过时的 XEP-22 完成的。很有可能对方没有实施这种过时的机制。

由于这是 3 年前的事情,寻找其他解决方案可能是个好主意,或者(根据您的需要,可能不推荐)使用旧版本的 Smack 或 aSmack。

【讨论】:

是的,我昨天在做研究,我也读到了。我想知道是否有办法查看消息是否已传递到服务器。使用 DeliveryReceiptManager 是否是个好主意? 我在这方面的经验较少,但通过快速查看文档,它看起来完全符合您的需求,我说去吧。 谢谢,兄弟的帮助,我已经这样做了,但我认为有一种简单的方法,哈哈,但别担心,我们是开发人员 xd,我们必须找到一种方法来做我们需要或想做的事情:再次感谢。汤姆,我不知道你能不能在这里给我发私信,否则我怎么加你? XD 好吧,我几乎每天都在这里,你可以随时通过 meta 使用聊天 :)【参考方案2】:

消息事件管理器 (XEP-22) 现已过时,但 smack 团队仍在维护它。您可以通过 gradle 使用 smack 遗留库

compile "org.igniterealtime.smack:smack-legacy:4.1.3"

【讨论】:

以上是关于Android Smack MessageEventManager 未编译的主要内容,如果未能解决你的问题,请参考以下文章

asmack/Smack 4.1 on android 设置

找不到提供程序类 SMACK 4.1.1 Android

如何在 Android 的 Smack 中接收文件?

Smack XMPP android 连接时崩溃

发送自定义 IQ 查询 (Android)(Smack)

在 Android 的 SmackInitialization 中无法获得 smack 版本