gpt4 book ai didi

ios - xmppStreamDidConnect 在 Swift 中永远不会被调用

转载 作者:行者123 更新时间:2023-11-29 05:50:16 25 4
gpt4 key购买 nike

我尝试使用 XMPPFramework 连接到 Swift 应用程序中的聊天服务器,但 didConnect 委托(delegate)方法从未被调用。我已经在 Objective C 中创建了一个基本应用程序,并且可以毫无问题地在我的聊天服务器中进行连接和身份验证。

在 Swift 项目中,我尝试使用代码连接:

class AppDelegate: UIResponder, UIApplicationDelegate {
var stream:XMPPStream = XMPPStream()
var reconnect:XMPPReconnect = XMPPReconnect()
var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
stream.addDelegate(self, delegateQueue: DispatchQueue.main)
stream.myJID = XMPPJID(string: "user@chatserver.net")
reconnect.activate(stream)
do {
try stream.connect(withTimeout: XMPPStreamTimeoutNone)
}
catch let err{
print("error occured in connecting\(String(describing: err.localizedDescription))")
}
return true
}

我已经调试了 XMPPFramework,并在方法 - (void)handleStreamFeatures 中执行了对委托(delegate)的调用:

[multicastDelegate xmppStreamDidConnect:self];

我查看了multicastDelegateObject,并有一个引用我的委托(delegate)和OS_dispatch_queue_main的节点,但执行后我的xmppStreamDidConnect方法没有执行。

最佳答案

正如此 Github Issue, 中所述问题出在方法声明上。我的 xmppStreamDidConnect 需要一个下划线,根本问题是,如果您不导入 swift 扩展,编译器会将该声明标记为不正确,尽管它可以工作。因此,为了解决我的问题,我需要导入 pod 'XMPPFramework/Swift' 并将方法声明更改为

func xmppStreamDidConnect(_ sender: XMPPStream) {

关于ios - xmppStreamDidConnect 在 Swift 中永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55745244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com