- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence)
来管理在线离线状态。这个功能对于一对一用户来说工作正常,但它不能在多个用户上正常工作用户。
例如,我有 3 个用户 A、B 和 C,现在情况是在线离线状态对于 A 到 B 和 B 到 A 工作正常,如 func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence)
函数调用得很好。但如果 C 用户检查 A 或 B 的状态,则 func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence)
不会被调用。
我无法理解问题所在。这是我的代码:
func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence) {
let presenceType = presence.type
let myUsername = sender.myJID?.user
print("myusername \(myUsername)")
if let usr = presence.from?.user {
print("didReceive :- \(presenceType)")
print("didReceive usr :- \(usr)")
if usr != myUsername {
if presenceType == "available" {
let dict: NSDictionary = ["presenceType":"1",
"user_id":usr]
if !APP_DELEGATE.arrPresentUser.contains(dict) {
APP_DELEGATE.arrPresentUser.add(dict)
}
} else {
let pred : NSPredicate = NSPredicate(format: "user_id = %@", usr)
let approvalRequestArray = APP_DELEGATE.arrPresentUser.filtered(using: pred) as NSArray
if approvalRequestArray.count > 0 {
let dict = approvalRequestArray.object(at: 0) as! NSDictionary
APP_DELEGATE.arrPresentUser.remove(dict)
}
}
NotificationCenter.default.post(name: Notification.Name("ReceivedUserStatus"), object: nil)
}
}
}
注意:我也尝试过使用@objc。(@objc func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence)
)
最佳答案
如果你想检查特定用户的存在,使用这个。
let query = XMLElement(name: "query", xmlns: "jabber:iq:last")
let iq = XMPPIQ(type: "get", to: "User's JID here", elementID: xmppStream.generateUUID, child: query)
self.xmppStream.send(iq)
获取委托(delegate)方法中的存在。
func xmppStream(_ sender: XMPPStream, didReceive iq: XMPPIQ) -> Bool {
if iq.isResultIQ {
print(iq.from?.user)
print(iq.lastActivitySeconds())
}
}
关于swift - xmppframework 的 didReceive 存在无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498461/
我正在使用 XMPPFramework在我的 iOS 应用程序中发送和接收客户端和服务器之间的命令消息。服务器会立即响应不同的命令消息。 有时候连接很慢,客户端发来的消息会长时间没有响应。所以我想知道
我正在为 iPhone 开发一款应用程序,其中功能之一是使用 XMPPFramework 的即时消息系统。现在,我正在使用 Google Talk 进行测试。委托(delegate)与管理用户界面的类
我正在 iPhone 上使用 xmppframework。我想知道如何检查我的特定域的所有可用用户? 谢谢 最佳答案 - (void)xmppStream:(XMPPStream *)sender d
问题:我正在使用XMPPFramework和Openfire服务器创建iOS聊天应用程序。但是,我无法连接到服务器。但是,我可以使用GTalk或Facebook帐户登录。此外,我可以使用另一个Jabb
我认为标题足够说明问题,但故事如下: 我是 XMPPFramework 的新手对于 iOS,我想将我的客户端设置为自动接受它收到的任何订阅请求。这样其他客户端可以在请求时看到该客户端的存在状态。 根据
需要帮助以获取有关好友的存在信息的信息。 我正在调用“fetchRoster”函数,但是我正在获取名册列表而不是存在信息。 我也尝试显式调用存在信息。但是在我的 iOS 应用程序中没有调用 didRe
我将openfire用作xmpp服务器,并希望通过Turnsocket传输文件。 openfire(本地)配置: xmpp.auth.anonymous true xmp
我有一个用于一对一聊天的应用程序。现在我需要实现群聊。我知道 XMPPFramework 是可能的,并且有一个名为 XMPPRoom 的类,我们可以使用它来创建房间或加入房间。但是我无法在我的项目中实
有什么方法可以让我查询例如 muc 房间的列表,但指定某些约束。 我已在每个房间的配置表单中的描述字段下附加了每个房间的位置。我想找出获得用户位置 500m 范围内所有房间的最佳方法是什么。 在后端,
如何使用 XMPPFramework 在 iPhone 中实现 GroupChat。我尝试了休闲代码,但未创建房间。我如何知道房间是否已创建。XMPPRoomDelegate 未被调用。当 Strea
我在 Openfire 服务器上创建了一个组和两个用户。我能够使用 XMPPFramework 对两个用户进行身份验证,但无法在他们之间交换消息。我可以看到两个用户都加入了 Openfire 服务器上
为了更改我的登录状态,我使用了以下代码: XMPPPresence *presence = [XMPPPresence presenceWithType:@"away"]; [[sel
这个问题在这里已经有了答案: XMPPFramework - How to create a MUC room and invite users? (3 个答案) 关闭 8 年前。 我需要使用 XM
我的 xmpp 流连接成功,在回调中我尝试发送用户的存在。但是,我不断收到此错误:Error Domain=XMPPStreamErrorDomain Code=1“操作无法完成。(XMPPStrea
我从 Google Talk 帐户接收消息,它们显示在 Ios 模拟器的表格 View 中,但是当我发送消息时,它不会显示在 Google Talk 客户端(在另一台计算机上)中。这是代码: -(IB
我正在尝试将用户状态设置为离开(或目前的任何状态)。我正在使用以下代码,但它似乎没有做任何事情。 XMPPPresence *presence = [XMPPPresence presence]; N
我是 iOS 的新手。我正在使用 XMPPFramework 构建应用程序。但是最近几天我遇到了一个问题。找不到任何解决方案。问题是当我想向任何特定的 id 发送消息时,消息没有被发送。发送消息的 A
如何在 iOS 中使用 XMPPFramework 获取在线和离线好友列表? 我想向用户发送好友请求。那么我该如何实现呢?有人可以为我分享一些示例代码吗? 谢谢。 最佳答案 通过使用这些方法,您将收到
我正在使用 https://github.com/robbiehanson/XMPPFramework对于我的 iOS 聊天应用程序。 我需要帮助来删除注册用户帐户。 请帮帮我。 最佳答案 如 the
我已经使用 XMPP 协议(protocol)进行了一对一聊天。现在,我想在我的应用程序中发送图像和视频。我研究了文件传输,但没有找到解决方案。我还使用了下面的代码进行 Socket 连接。 请告诉我
我是一名优秀的程序员,十分优秀!