Невозможно подключить веб-сокет к серверу (https) в приложении iOS как в режиме выпуска, так и в режиме отладки. - PullRequest
0 голосов
/ 29 января 2019

КОНТЕКСТ: Я разработал собственное приложение, которое использует websocket (используя socket.io-client) для подключения к веб-серверу https (nginx).

ПРОБЛЕМА: Я не могу подключиться кВеб-сервер https (nginx), использующий веб-сокет в приложении iOS (на реальном устройстве) в режимах выпуска и отладки.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Приложение прекрасно работает на Android.Любопытно, что приложение отлично работает на iOS, когда я включаю «Отладку JS удаленно» с реального устройства.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я знаю, что вы исправили свою проблему, но вместо понижения вы прошли следующие шаги?Потому что в iOS вам нужно добавить ключ в NSExceptionDomains в info.plist.Вы должны были перейти к своему info.plist и щелкнуть по нему правой кнопкой мыши, затем выбрать open as > source code в своем проекте и изменить свой код, как показано ниже:

    <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>https://yourdomain</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy
</key>

Затем очистить и заново собрать.

0 голосов
/ 30 января 2019

Я использовал версию 2.0.0 socket.io-client для своего приложения.

Кажется, эта версия пытается использовать browserwebsocket во всех соединениях websocket.Когда я запускаю свое приложение в режиме выпуска или в режиме отладки (без опции «Отладка JS удаленно» с устройства), приложение пытается использовать browserwebsocket для установления соединения, которое не будет работать в приложении с естественной реакцией.

Когда я включу опцию «Отладка js удаленно» на устройстве, приложение сможет использовать браузер chrome для установления соединения через веб-сокет с помощью browserwebsocket.

Я понизил версию socket.ioклиент до 1.5.1, и приложение смогло установить соединение с websocket во всех режимах.Эта версия имеет встроенную поддержку для взаимодействия с веб-сокетами приложений собственного реагирования.

Может быть способ сделать версию 2.0.0 для socket.io так, чтобы она работала для приложений реагирующих наивных.Если у вас есть способ сделать это, пожалуйста, отправьте свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...