IOS Baresip с SIP Calling - PullRequest
       7

IOS Baresip с SIP Calling

1 голос
/ 24 апреля 2019

Я пытаюсь разработать приложение, которое обеспечивает вызовы Audio и Video, теперь я слежу за библиотекой baresip для того же.

и я написал следующий код при нажатии кнопки:

@IBAction func btnCallClick(_ sender: Any) {
    guard libre_init() == 0 else { return }

    // Initialize dynamic modules.
    mod_init()

    // Make configure file.
    if let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
        conf_path_set(path)
    }
    guard conf_configure() == 0 else { return }

    // Initialize the SIP stack.
    guard baresip_init(conf_config(), 0) == 0 else { return }
    guard ua_init("SIP", 1, 1, 1, 0) == 0 else { return }

    // Load modules.
    guard conf_modules() == 0 else { return }

    let addr = "sip:101@xxx.xxx.com:port;auth_pass=aaaa;transport=udp;answermode=auto"

    // Start user agent.
    guard ua_alloc(&agent, addr) == 0 else { return }

    // Make an outgoing call.
    guard ua_connect(agent, nil, nil, "sip:100@xxx.xxx.com", VIDMODE_OFF) == 0 else { return }

    // Start the main loop.
    re_main(nil)
}

Теперь я получаю вызов с одного устройства на другое, но он зависает, почему он зависает? Я провел много времени, кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 30 апреля 2019

Я думаю, что реальная проблема - ваша re_main() функция в последней строке функции. Он запускает выполнение цикла в потоке. так что до тех пор, пока вы не вызовете функцию re_cancel(), ваше выполнение процесса останется в потоке.

Решение: Помещение вашей функции re_main() в глобальный поток, инициированный пользователем, решит вашу проблему. он запустит все другие процессы в глобальной очереди, инициированной пользователем, и основной поток будет свободен для вашей цели взаимодействия с пользовательским интерфейсом.

DispatchQueue.global(qos: .userInitiated).async {
        re_main(nil)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...