在 XMPPFramework 和 Swift 2 中未调用 didReceiveInvitation()

2023-12-02

我正在创建聊天应用程序,例如Whatsapp.
我已经成功编写了文本聊天、图像、音频、视频传输的功能。现在我正在创建多用户聊天。经过长时间的研发,我问这个问题。请告诉我我的代码中做错了什么。我已经遵循了所有这些教程,但运气不佳

https://github.com/robbiehanson/XMPPFramework/issues/640

MUC 如何使用 XMPPFramework

接受聊天室邀请

好的,下面是我的代码

1.成功设置STREAM后,我在goOnline方法中设置了邀请的XMPPMUC委托

private func goOnline() {
    let presence = XMPPPresence()
    let domain = xmppStream.myJID.domain

    if domain == "gmail.com" || domain == "gtalk.com" || domain == "talk.google.com"
        //        || domain == "chat.alqatech.com"
    {
        let priority = DDXMLElement.elementWithName("priority", stringValue: "24") as! DDXMLElement
        presence.addChild(priority)
    }
    xmppMUC = XMPPMUC(dispatchQueue: dispatch_get_main_queue())
    xmppMUC!.activate(self.xmppStream)
    xmppMUC!.addDelegate(self, delegateQueue: dispatch_get_main_queue())

    xmppStream.sendElement(presence)
}

2. 创建群组

func createGroupChat(members:[String],groupName:String){
        membersToInvite = members
        xmppRoomMemoryStorage = XMPPRoomMemoryStorage()
        let xmppJid = XMPPJID.jidWithString("\(groupName)@conference.chat.xxxxxx.com")
        let xmppRoom = XMPPRoom.init(roomStorage: xmppRoomMemoryStorage, jid: xmppJid)
        xmppRoom.activate(xmppStream)
        xmppRoom.addDelegate(self, delegateQueue: dispatch_get_main_queue())
        xmppRoom.joinRoomUsingNickname(xmppStream.myJID.user, history: nil)
    }

3. 群组创建成功

func xmppRoomDidCreate(sender: XMPPRoom!) {
        print(sender)
    }

4. xmppRoomDidJoin 调用成功然后我在这里邀请用户

func xmppRoomDidJoin(sender: XMPPRoom!) {
        sender.fetchConfigurationForm()
        for JID in membersToInvite! {
            sender.editRoomPrivileges([XMPPRoom.itemWithAffiliation("member", jid: XMPPJID.jidWithString(JID))])
            sender.inviteUser(XMPPJID.jidWithString(JID), withMessage: "THIS IS GROUP MESSAGE")

        }

    }

5. didFetchConfigurationForm调用成功

func xmppRoom(sender: XMPPRoom!, didFetchConfigurationForm configForm: DDXMLElement!) 
{

        let newConfig: DDXMLElement = configForm.copy() as! DDXMLElement
        let fields: [AnyObject] = newConfig.elementsForName("field")
        for field in fields {
            let vars: String = field.attributeStringValueForName("var")
            // Make Room Persistent
            if (vars == "muc#roomconfig_persistentroom") {
                field.removeChildAtIndex(0)
                field.addChild(DDXMLElement(name: "value", stringValue : "1"))
            }
        }
        sender.configureRoomUsingOptions(newConfig)


    }

6. didReceive Invitation 它没有被调用。

func xmppMUC(sender: XMPPMUC!, roomJID: XMPPJID!, didReceiveInvitation message: XMPPMessage!) {
        print(roomJID)
        xmppRoomMemoryStorage = XMPPRoomMemoryStorage()
        let xmppRoom = XMPPRoom.init(roomStorage: xmppRoomMemoryStorage, jid: roomJID)
        xmppRoom.activate(xmppStream)
        xmppRoom.addDelegate(self, delegateQueue: dispatch_get_main_queue())
        xmppRoom.joinRoomUsingNickname(xmppStream.myJID.user, history: nil)

    }

如果在文件 XMPPMUC.m 第 317 行设置断点

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

当邀请发送给您的用户时是否会调用该方法?如果是,继续调试并检查第382行是否正在执行。

该行有这样的:

[multicastDelegate xmppMUC:self roomJID:roomJID didReceiveInvitation:message];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 XMPPFramework 和 Swift 2 中未调用 didReceiveInvitation() 的相关文章

  • 苹果拒绝任何访问UDID的应用程序,不支持Retina、iPhone 5显示屏?

    得到消息来自TNW http thenextweb com apple 2013 03 21 after a year of warnings apple will no longer accept any apps that use ud
  • 在 Swift 3 中打印

    我想知道这两种在 Swift 中打印对象的方法有什么不同 结果看起来是一样的 var myName String yohoo print My name is myName print My name is myName 功能上几乎没有区别
  • 发布后更新 iOS 应用程序描述而不更改应用程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 一个应用程序在iTunes商店发布后 是否可以更改该应用程序的描述而无需再次更新整个应用程序 那么是否可以更改图像或描述文本 保存更改并更
  • iOS 8 启动图像文件 - 导航栏和状态栏

    我正在使用 Interface Builder 制作 iOS 8 的启动图像文件 我想要的启动图像非常简单 我认为与 设置 应用程序相同 顶部的导航栏带有一个空的分组 TableView 无标题等 请注意 我通常不使用 Interface
  • Xcode 10 / iOS 12 中不遵守锚点约束

    昨天这一切都在 Xcode 9 和 iOS 11 下运行 但是 更新到 Xcode 10 和 iOS 12 后 该视图不再显示 我正在视图中显示视频 今天我能听到但看不到视频 我检查了框架 发现它为零 这解释了问题 但是 与之前的版本相比没
  • iOS 6 中的模态视图控制器强制横向方向

    我有一个以纵向模式呈现的 UITabBarController 在其中一个选项卡上 我有一个以模态方式显示 UIViewController 的按钮 一个简单的故事板 segue 执行该操作 我希望这个模态视图以横向模式显示 但我无法让它自
  • ScrollView 内的 SwiftUI 列表

    我想将列表放在 ScrollView 中 以便可以一起滚动列表行和标题 但我发现 ScrollView 中的 List 不起作用 它什么也没显示 我应该同时使用它们 我应该使用 ScrollView 这样当我滚动行时 我可以使标题 图像或文
  • Firebase 查询 - 查找包含字符串的子项

    我在使用 Firebase 查询时遇到了一些问题 我想查询对象 其中对象子值包含特定字符串 到目前为止 我有一些看起来像这样的东西 Firebase ref Firebase alloc initWithUrl https dinosaur
  • 使用 AVVideoCompositionCoreAnimationTool 在 CALayer 中将视频与静态图像混合

    我正在尝试将来自相机的视频与静态图像 水印 混合 我已经检查了这里的问题 答案和一些示例 包括来自 Apple 的 WWDC AVEditDemo 并以以下代码结束 不幸的是 导出的视频不包含带有图像的图层 有任何想法吗 void imag
  • 如何为具有圆角的精灵设置物理体

    我创建了一个SKShapeNode通过以下方式 let sprite SKShapeNode rect CGRect x 20 y 10 width 40 height 20 cornerRadius 10 我也像这样设置了一个物理体 sp
  • 具有 3D 旋转功能的 CAEmitterCell

    我正在尝试使用 CAEmitterLayer 和 CAEmitterCell 重现从顶部落下的小纸片效果 到目前为止 我得到了它的 2D 动画 但是我很难让每个单元格在掉落时旋转 如何对每个粒子应用随机旋转 我尝试过 3D Transfor
  • 带有 HTML 的 UIActivityViewController

    当我将包含 HTML 内容的字符串作为数组元素传递给UIActivityViewController initWithActivityItems方法中 它不会在选定的 共享 控制器中将其呈现为 HTML 而是呈现 HTML 源 即标记而不是
  • 如何阻止 Xamarin 在启用位码的情况下构建我的应用程序?

    在我的 iOS 版本的配置中 没有禁用位码的选项 在 Xcode 中可以设置 ENABLE BITCODE NO 我需要这个 因为我的链接框架不是用位码构建的 而且现在苹果不再允许半位码编译的应用程序 In your csproj对于您的
  • Sqlite3 查询在 iOS 8.2 下变得非常慢

    我制作了一个可以在应用程序内使用 sqlite 数据库的应用程序 在 iOS 8 2 之前 它工作得很好 但更新后 查询方法的工作速度慢了大约 100 倍 我试图查找有关此问题的信息 但尚未找到任何信息 有人有同样的经历吗 这是我的方法 到
  • 将 Unmanaged 与 nil 进行比较

    代码是从这篇博客文章复制的 http matthewpalmer net blog 2014 06 21 example ios keychain swift save query http matthewpalmer net blog 2
  • 如何在 iOS 上反转使用 CoreGraphics 渲染的 pdf 上的文本颜色?

    我正在使用开源 PDF 查看库 VFR PDF Readerhttps github com vfr Reader https github com vfr Reader 我正在尝试实现 夜间模式 或黑色背景与白色文本 我可以将背景设置为我
  • 如何在iOS中像Android一样实现菜单

    我需要为 iOS 实现菜单 例如android menu表示导航按钮栏 右侧 如果我点击该菜单就会显示 我正在使用故事板 所以你想要这样的东西 甚至可以在风景中使用 我想我要花很长时间来解释 D 基本上我创建了一个自定义 UINavigat
  • SwiftUI 中的计算 (NSObject) 属性不会更新视图

    所以 我想要一个Text它根据我的 CoreData 模型的内容更改其内容 为此 我在 Xcode beta 4 中使用了计算属性 但它似乎不再起作用了 这是一个错误还是还有其他我没有看到的问题 我真正遇到的问题是我的视图 和计算的属性 似
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • 在 IBAction 中调用其他函数之前,如何使函数完成?

    我无法理解完成处理程序 我有一个 textFieldEditingDidChange IBAction 首先调用verify 文本字段输入上的函数然后是 if 语句在 apply 返回的布尔值上 问题是 if 语句在 verify 完成之前

随机推荐

  • 如何在反应草稿所见即所得中设置初始编辑器状态

    在将数据从react draft wysiwyg文本编辑器存储到服务器端时 我使用此函数将其转换为JSON content JSON stringify convertToRaw state editorState getCurrentCo
  • Angularfire 6为所有函数设置默认云函数区域(位置)

    How to 为 Firebase 云函数全局设置默认区域通过有角度的火 使它们deployed到指定区域 或者它不必是有角度的火 我只是不想打电话 region 方法与每个函数声明 我在文档中找不到有关如何执行此操作的任何内容 但我听说这
  • 使用 Javascript 操作 FontAwesome

    我正在做一个小项目来学习更多关于 Javascript 的知识 这样我将来就可以研究 svg 动画了 现在我正在开发一个按钮 当你点击它时 它会改变他的输入 circle document getElementById circle rem
  • ggplot2 可视化绘制在彼此之上的点的计数:stat_bin2d 或 geom_tile 或点大小?

    我的问题很简单 我有一些带有 x y 坐标的点 它们位于由 1x1 正方形组成的矩形网格内 这些点具有平均坐标 因此多个点被赋予相同的坐标 它们完全重叠 可重现的例子 generate fake data y lt seq from 0 5
  • 如何使用 selenium 选择搜索建议?该网站阻止我点击提交,需要进行选择

    我试图让自己更轻松地搜索临时公寓 但包含这些公寓列表的网站要求我从下拉列表中选择一个建议 然后才能单击 提交 无论搜索框中的条目有多完整 这里的最终希望是我可以转到搜索结果 然后从每个列表中提取联系信息 我能够使用 Beautiful so
  • 如何在vanilla javascript中动态添加选项到现有选择

    我想使用纯 JavaScript 动态添加选项 我能找到的所有内容都涉及 JQuery 或尝试动态创建选择 我能找到的最接近的东西是使用 Javascript 中的选项动态添加输入类型选择它执行后者 并且是我发现的唯一不涉及 JQuery
  • Django Haystack:搜索带或不带重音符号的术语

    我正在使用 django haystack 在我的 django 项目上实现一个搜索系统 问题是我的模型中的某些字段有一些法语口音 我想找到包含带或不带口音的查询内容的条目 我认为最好的想法是创建一个 SearchIndex 其中包含带重音
  • Java Arrays.hashcode() 的 hashcode 实现是否均匀分布

    我查看了源代码Arrays hashCode char c 我不太确定它所应用的算法在所有情况下都能很好地工作 public static int hashCode int a if a null return 0 int result 1
  • 程序忽略 if 语句,并在 False 时打印 True

    我正在为家庭作业问题编写一个简单的程序 它似乎跳过了我的 if 语句 我看了其他提出的问题 那里的问题似乎不是我的问题 所以我希望你能帮忙 def isWordGuessed secretWord lettersGuessed if let
  • 在模态窗口中打开 Highcharts

    我正在一个网站上工作 我在该网站上大量使用 Highcharts 来以图表形式呈现数据 我希望用户能够将每个图表 缩放 到模式窗口中 以获得更好的可读性 我知道如何使用 API 来操作图表 但我不太确定如何克隆图表并使用变量引用新图表 我已
  • 两个日期之间的月份

    是否可以得到month names两个日期之间SQl ie 2011 05 01 And 2011 08 01是输入 我只想输出为 Month May June July August 如果有人知道该查询 请分享 DECLARE Start
  • signature.verify() 总是返回 False

    public static void main String args try String mod q0AwozeUj0VVkoksDQSCTj3QEgODomq4sAr02xMyIrWldZrNHhWfZAIcWt2MuAY3X6S3Z
  • 未声明“TestString”。由于其保护级别,它可能无法访问。 (BC30451)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我正在尝试使用一些即时代码编译VBCodeProvid
  • 对 geom_line 和 x 轴之间的区域进行着色

    我有两张图显示供给和需求 在一张图中我从供给中减去了需求以显示由此产生的不对称性 我想对 x 轴和不对称负值部分之间的区域进行阴影处理 以显示缺陷的程度 我目前使用以下代码 plot asymmetry lt ggplot data df
  • 如何获取高DPI系统下的真实屏幕分辨率?

    因此 Delphi 程序不支持 DPI 直到最近我需要真实的屏幕分辨率时 这才让我感到困扰 当 更容易阅读屏幕上的内容 为 150 时 Screen Width 报告错误的分辨率 在具有高 DPI 的计算机中 一些建议是使应用程序具有高 D
  • 为什么在检查 textView 文本是否以预期字符串结尾(省略时)时 android espresso 测试失败

    我有一个 android 测试 检查应用 android ellipsize end 时外部文本消息是否被截断并以三个点结尾 我不知道为什么测试失败 尽管活动中呈现的文本格式正确 Test fun when errorMessage is
  • 为什么 Java 中有数组和数组

    我遇到过这两个文档 该类的 Java 文档Array 该类的 Java 文档Arrays 我想知道这两个类之间有什么区别 它们都提供了一组不同的静态方法 但为什么它们是分开的呢 更深层次的区别是什么 它们之间的关系与普通数组实例之间的关系是
  • stage 关键字是否在 YAML 文件中的 Azure DevOps 中定义构建或部署管道

    我想知道我们是否考虑这个 YAML 代码块 如果它已经被视为构建和发布管道 或者我们需要定义阶段来表征它 下面的代码可以工作 但运行时看不到各个阶段 然而 在这种情况下 它会构建并部署到 Azure 所以这就是我问的原因 我正在寻找正确的术
  • 限制线程数

    我有一个包含我要下载的项目的列表 我使用 for 循环来迭代列表 对于此列表中的每个项目 我启动一个引用该项目的新线程 我的问题是我想同时限制 maxDownload for int i downloadList Count 1 i gt
  • 在 XMPPFramework 和 Swift 2 中未调用 didReceiveInvitation()

    我正在创建聊天应用程序 例如Whatsapp 我已经成功编写了文本聊天 图像 音频 视频传输的功能 现在我正在创建多用户聊天 经过长时间的研发 我问这个问题 请告诉我我的代码中做错了什么 我已经遵循了所有这些教程 但运气不佳 https g