Xamarin XMPP 客户端库

Posted

技术标签:

【中文标题】Xamarin XMPP 客户端库【英文标题】:Xamarin XMPP client library 【发布时间】:2015-10-30 11:48:39 【问题描述】:

我花了一整天的时间寻找可以在 Xamarin 中运行的 XMPP 客户端库。 具体来说,我正在开发一个带有可移植类库(Xamarin Forms)的跨平台应用程序。我已经通过Sharp.Xmpp, s22.xmp, agsSharp and UbietyXMPP

每个人都有自己独特的 Xamarin 插件问题。 是否有任何与 Xamarin 兼容的经过测试和尝试的客户端库?

以下是从NuGetagsXmpp 的情况下添加编译时错误日志时每个客户端库的错误文本。

客户端库的错误消息:

AgsXmpp

加载程序集时出现错误 2 异常: System.IO.FileNotFoundException:无法加载程序集 'System.Drawing,版本=2.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。也许它在 Mono 中不存在 安卓配置文件?文件名:'System.Drawing.dll' 在 Xamarin.android.Tuner.DirectoryAssemblyResolver.Resolve(AssemblyNameReference 参考,ReaderParameters 参数)在 Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection`1 程序集,AssemblyDefinition 程序集,布尔***)在 Xamarin.Android.Tasks.ResolveAssemblies.Execute() whattf.Droid

S22.Xmpp

正在安装“S22.Xmpp 1.0.0.0”。成功安装'S22.Xmpp 1.0.0.0'。将“S22.Xmpp 1.0.0.0”添加到 whattf.Droid。卸载“S22.Xmpp 1.0.0.0”。成功卸载“S22.Xmpp 1.0.0.0”。 安装失败。回滚...无法安装包'S22.Xmpp 1.0.0.0'。您正在尝试将此包安装到以“MonoAndroid,Version=v6.0”为目标的项目中,但该包不包含 任何与其兼容的程序集引用或内容文件 框架。如需更多信息,请联系包作者。

XMPP

正在安装“XMPP 0.7.0.21”。成功安装“XMPP 0.7.0.21”。 将“XMPP 0.7.0.21”添加到 whattf.Droid。卸载“XMPP 0.7.0.21”。 成功卸载“XMPP 0.7.0.21”。安装失败。滚动 返回... 无法安装软件包“XMPP 0.7.0.21”。你正试图 将此包安装到目标项目中 'MonoAndroid,Version=v6.0',但包中不包含任何 与之兼容的程序集引用或内容文件 框架。如需更多信息,请联系包作者。

UbietyXMPP

正在尝试解决依赖项“SharpZipLib (= 0.86.0)”。尝试 解决依赖性“Heijden.Dns (= 1.0.0)”。试图解决 依赖 'Microsoft.Bcl (= 1.1.10)'。试图解决 依赖 'Microsoft.Bcl.Build (= 1.0.14)'。试图解决 依赖 'Microsoft.Bcl.Build (= 1.0.21)'。试图解决 依赖 'Microsoft.Net.Http (= 2.2.29)'。试图解决 依赖 'Serilog (= 1.5.9)'。试图解决依赖关系 'Serilog.Sinks.Seq (= 1.5.15)'。试图解决依赖关系 'libidn (= 1.29.1)'。试图解决依赖关系 '异常分析器(= 1.0.5)'。试图解决依赖关系 'Microsoft.AnalyzerPowerPack (= 1.0.1)'。安装'SharpZipLib 0.86.0'。成功安装“SharpZipLib 0.86.0”。安装“Heijden.Dns 1.0.0”。成功安装“Heijden.Dns 1.0.0”。 安装“Microsoft.Bcl 1.1.10”。安装成功 '微软.Bcl 1.1.10'。安装“Microsoft.Bcl.Build 1.0.21”。 成功安装“Microsoft.Bcl.Build 1.0.21”。安装 'Microsoft.Net.Http 2.2.29'。安装成功 'Microsoft.Net.Http 2.2.29'。安装“Serilog 1.5.9”。成功地 安装了“Serilog 1.5.9”。安装“Serilog.Sinks.Seq 1.5.15”。 成功安装“Serilog.Sinks.Seq 1.5.15”。安装'libidn 1.29.1'。成功安装了“libidn 1.29.1”。安装“异常分析器 1.0.5”。成功安装'ExceptionAnalyzer 1.0.5'。安装“Microsoft.AnalyzerPowerPack 1.0.1”。成功安装“Microsoft.AnalyzerPowerPack 1.0.1”。安装'UbietyXMPP 0.7.37.0'。成功安装“UbietyXMPP 0.7.37.0”。将“SharpZipLib 0.86.0”添加到 whattf.Droid。卸载 'SharpZipLib 0.86.0'。成功卸载“SharpZipLib 0.86.0”。安装失败。回滚...无法安装包 'SharpZipLib 0.86.0'。您正在尝试将此包安装到以“MonoAndroid,Version=v6.0”为目标的项目中,但该包不包含 任何与其兼容的程序集引用或内容文件 框架。如需更多信息,请联系包作者。

【问题讨论】:

【参考方案1】:

Xamarin 是完整 .NET 框架的子集,并使用自己的核心库。这就是为什么如果不为 Xamarin 重新编译它们并在需要时对源代码进行一些修改,您将无法运行这些库。

MatriX XMPP 库适用于 Xamarin ios 和 Android。但它是一种商业产品。

【讨论】:

您的建议似乎是我认为的最后一个选项。谢谢。 我正在为我的公司开发聊天应用程序。我们有兴趣了解您的产品的试用和许可要求 我试用了 Matrix 库,它抛出了这个错误 Error 2 The base class or interface 'System.ComponentModel.Component' in assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=无法解析类型“Matrix.XmppStream”引用的 b77a5c561934e089'。 我猜你使用了错误的版本。确保使用正确的 Xamarin 包 我在 PCL 中使用 Xamarin Forms

以上是关于Xamarin XMPP 客户端库的主要内容,如果未能解决你的问题,请参考以下文章

asmack vs tigase xmpp 库

使用 Google AppEngine XMPP 库查询客户端的时区

无法将 Signalr 客户端库作为可移植库添加到 Xamarin 项目

无法使用 java 中的 smack 库使用 xmpp 服务器登录

如何在 java 中使用 Smack XMPP 库处理 TLS 证书

XMPP 客户端接收服务器消息