NWConnection и сотовые данные, isComplete никогда не становится правдойIOS

Программируем под IOS
Ответить
Anonymous
 NWConnection и сотовые данные, isComplete никогда не становится правдой

Сообщение Anonymous »

Я использую NWconnection, чтобы заставить некоторые запросы проходить через сотовые данные. Все работает нормально, но я продолжаю вызывать Connection.receive и не знаю, когда передача будет завершена.

Код: Выделить всё

// Setting up the connection:
let tcpOptions = NWProtocolTCP.Options()
let parameters = NWParameters(tls: .init(), tcp: tcpOptions)
parameters.requiredInterfaceType = .cellular
port = port ?? NWEndpoint.Port(443)

// ...

NWConnection(to: .hostPort(host: NWEndpoint.Host(host),port: port), using: parameters)

//...

func receive(withConnection connection: NWConnection, completion: @escaping dataCompletion) {
connection.receive(minimumIncompleteLength: 1, maximumLength: Int.max) { [self] data, contentContext, isComplete, error in
if let data = data {
receivedData.append(data)
print(contentContext)
if isComplete || error != nil  || connection.state != .ready {
cancelConnection(connection)
} else {
processor?.receive(withConnection: connection, completion: completion)
}
} else {
cancelConnection(connection)
}
}
}

Я использую обычные конечные точки HTTP. Данные при приеме поступают частями, но параметр isComplete никогда не становится истинным, поэтому я не знаю, когда остановиться и отправить полученные данные обратно полностью.
Я' Я думал добавить тайм-аут, но это кажется хакерским. Есть ли лучшее решение?

Подробнее здесь: https://stackoverflow.com/questions/786 ... comes-true
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»