首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用多点连通性快速连接节点

无法使用多点连通性快速连接节点
EN

Stack Overflow用户
提问于 2017-07-30 19:12:46
回答 1查看 277关注 0票数 0

我的快速代码不能互相连接。简单的目标是发送一个图像。

代码语言:javascript
复制
import UIKit

导入MultipeerConnectivity

类ViewController: UIViewController,MCSessionDelegate,MCBrowserViewControllerDelegate {

代码语言:javascript
复制
var peerID: MCPeerID!
var mcSession: MCSession!
var mcAdvertiserAssistant: MCAdvertiserAssistant!
@IBOutlet var img: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    peerID = MCPeerID(displayName: UIDevice.current.name)
    mcSession = MCSession(peer: peerID, securityIdentity: nil, encryptionPreference: MCEncryptionPreference.none)
    mcSession.delegate = self
    joinSession(action: UIAlertAction.init())
}

func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {

}

func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) {

}

func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL, withError error: Error?) {

}

func browserViewControllerDidFinish(_ browserViewController: MCBrowserViewController) {
    dismiss(animated: true)
}

func browserViewControllerWasCancelled(_ browserViewController: MCBrowserViewController) {
    dismiss(animated: true)
}

func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {
    switch state {
    case MCSessionState.connected:
        print("Connected: \(peerID.displayName)")

    case MCSessionState.connecting:
        print("Connecting: \(peerID.displayName)")

    case MCSessionState.notConnected:
        print("Not Connected: \(peerID.displayName)")
    }
}

func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
    if let image = UIImage(data: data) {
        DispatchQueue.main.async { [unowned self] in
            self.img.image = image
        }
    }
}


func joinSession(action: UIAlertAction!) {
    print("batata")
    let mcBrowser = MCBrowserViewController(serviceType: "hws-kb", session: mcSession)
    mcBrowser.delegate = self
    present(mcBrowser, animated: true)
    print("batatinha")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

第二码

导入UIKit导入MultipeerConnectivity

类ViewController: UIViewController,MCSessionDelegate,MCBrowserViewControllerDelegate {

代码语言:javascript
复制
var peerID: MCPeerID!
var mcSession: MCSession!
var mcAdvertiserAssistant: MCAdvertiserAssistant!

@IBOutlet weak var img: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    peerID = MCPeerID(displayName: UIDevice.current.name)
    mcSession = MCSession(peer: peerID, securityIdentity: nil, encryptionPreference: MCEncryptionPreference.none)
    mcSession.delegate = self as MCSessionDelegate
    startHosting(action: UIAlertAction.init())
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {

}

func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) {

}

func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL, withError error: Error?) {

}
func browserViewControllerDidFinish(_ browserViewController: MCBrowserViewController) {
    dismiss(animated: true)
}

func browserViewControllerWasCancelled(_ browserViewController: MCBrowserViewController) {
    dismiss(animated: true)
}


func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {

    switch state {
    case MCSessionState.connected:
        print("Connected: \(peerID.displayName)")

    case MCSessionState.connecting:
        print("Connecting: \(peerID.displayName)")

    case MCSessionState.notConnected:
        print("Not Connected: \(peerID.displayName)")
    }
}

func sendImage(img: UIImage) {
     print("baby")
    if mcSession.connectedPeers.count > 0 {
        print("baby1")
        if let imageData = UIImagePNGRepresentation(img) {
            print("baby2")
            do {
                try mcSession.send(imageData, toPeers: mcSession.connectedPeers, with: .reliable)
            } catch let error as NSError {
                let ac = UIAlertController(title: "Send error", message: error.localizedDescription, preferredStyle: .alert)
                ac.addAction(UIAlertAction(title: "OK", style: .default))
                present(ac, animated: true)
            }
        }
    }
}

@IBAction func teste(_ sender: Any) {
    print("hey")
    let img = #imageLiteral(resourceName: "triangle.png")
    self.img.image = img
    sendImage(img: img)
    print(mcSession.connectedPeers)

}

func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {

}



func startHosting(action: UIAlertAction!) {
    print("lololo")
    mcAdvertiserAssistant = MCAdvertiserAssistant(serviceType: "hws-kb", discoveryInfo: nil, session: mcSession)
    mcAdvertiserAssistant.start()
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-03 21:55:46

我也有同样的问题,但是我通过使用服务类型来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45403689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档