使用 iOS 和 Swift 3 在委托方法中未接收到 xmpp 存在

Posted

技术标签:

【中文标题】使用 iOS 和 Swift 3 在委托方法中未接收到 xmpp 存在【英文标题】:xmpp presence not receiving in delegate methods using iOS and Swift 3 【发布时间】:2017-07-24 10:34:17 【问题描述】:

我正在使用猫鼬。我在客户端的 Ubuntu 服务器和 Swift 3 上。我无法在委托功能中获得用户的存在。我已经为 Subscripting 实现了这样的代码,这不是调用

func xmppRoster(_ sender: XMPPRoster!, didReceivePresenceSubscriptionRequest presence: XMPPPresence!) 
        debugPrint("XMPPRoster : didReceivePresenceSubscriptionRequest ")
        debugPrint(presence)
        sender.acceptPresenceSubscriptionRequest(from: presence.from(), andAddToRoster: true)
    

当用户发送出席信息时,我无法在此委托方法中获得用户出席信息:

func xmppStream(sender: XMPPStream!, didReceivePresence presence: XMPPPresence!) 
        debugPrint(presence)

    

请让我知道我哪里出错了。

【问题讨论】:

请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

问题在于猜测方法声明从 Objective-C 到 Swift 的正确转换。以下 XMPPFramework 回调声明适用于 Swift 4:

@objc func xmppStream(_ stream:XMPPStream, didReceivePresence presence:XMPPPresence) 
    print("\(presence)")

【讨论】:

以上是关于使用 iOS 和 Swift 3 在委托方法中未接收到 xmpp 存在的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS5 中未调用 UIViewController 设备旋转委托方法

iOS 11 中未调用用户当前位置委托方法

iOS 中未调用自定义委托方法

在 iOS 11 和 Xcode 9.1 中未调用 CLLocationManager 的 didUpdateLocations 委托 [重复]

无法在 IOS Swift 中使用委托方法关闭侧边菜单

Swift 3 中未调用 UIPanGestureRecognizer 操作方法