我正在尝试在iPhone B上显示iPhone A的相机供稿。我通过将每个帧转换为Data对象,然后通过MultiPeer Connectivity将其发送到iPhone B,然后将数据转换回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)
将图片转换为数据,但仍然只能看到白色的屏幕。
编辑:我在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
}