Я пытаюсь отобразить канал камеры iPhone A на iPhone B. Я делаю это путем преобразования каждого кадра в объект данных, отправки его на iPhone B через MultiPeer Connectivity, а затем преобразования данных обратно в UIImageи отображать это.
После извлечения кадра iPhone A отправляет его:
func sendImageAsData(image: UIImage) {
if let imageData = image.pngData() {
print(imageData)
MultiPeer.instance.send(data: imageData)
}
}
, а iPhone B получает и анализирует его:
func multiPeer(didReceiveData data: Data) {
print(data)
let receivedImage = UIImage(data: data)
DispatchQueue.main.async {
self.drawView.image = receivedImage
}
}
Но все, что я вижу на iPhone Bсторона белый экран.Вывод консоли на стороне iPhone B выводит количество полученных байтов, так что я знаю, что он по крайней мере получает данные.Я также пытался использовать image.jpegData(compressionQuality: 1)
для преобразования изображения в данные, но все еще видел только белый экран.
EDIT : я добавил строку print(receivedImage)
сразу после let receivedImage = UIImage(data: data)
строка, и вывод консоли был:
138990 bytes
nil
139089 bytes
nil
139085 bytes
nil
139492 bytes
nil
Таким образом, изображение не отображается, потому что оно nil
.Любой ввод в отношении того, почему будет приветствоваться.
РЕДАКТИРОВАТЬ 2 : Это функция MultiPeer.instance.send()
, используемая для отправки данных.
public func send(data: Data) -> Bool{
if isConnected {
do {
let item = try NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true)
try session.send(item, toPeers: session.connectedPeers, with: MCSessionSendDataMode.reliable)
return true
} catch let error {
printDebug(error.localizedDescription)
return false
}
}
return false
}