xmppStreamDidConnect никогда не вызывается в Swift - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь подключиться к моему серверу чата в приложении Swift с помощью XMPPFramework, но метод делегата didConnect никогда не вызывается.Я создал базовое приложение в 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
}

IОтладка XMPPFramework и в методе - (void)handleStreamFeatures выполняется вызов делегата:

[multicastDelegate xmppStreamDidConnect:self];

Я наблюдал объект multicastDelegateObject и имеет узел со ссылкой на мой делегати OS_dispatch_queue_main, но после выполнения мой xmppStreamDidConnect метод не выполняется.

1 Ответ

0 голосов
/ 19 апреля 2019

Как описано в этом выпуске Github, проблема заключалась в объявлении метода.Мой xmppStreamDidConnect нуждается в подчеркивании, основная проблема заключалась в том, что если вы не импортируете расширения swift, компилятор помечает это объявление как неправильное, хотя оно работает.Поэтому, чтобы исправить мою проблему, мне нужно импортировать модуль 'XMPPFramework / Swift' и изменить объявление метода на

func xmppStreamDidConnect(_ sender: XMPPStream) {
...