iOS中的Multipeer连接框架问题

时间:2016-05-01 04:45:18

标签: ios swift multipeer-connectivity

我在iOS中尝试使用Multipeer Connectivity Framework。我想制作一个简单的应用程序,宣传设备,并浏览其他设备。这是我的代码:

class ViewController: UIViewController {

    static let serviceType = "mult-demo"
    let localPeerID = MCPeerID(displayName: UIDevice.currentDevice().name)

    func startAdvertising() {
        let advertiser = MCNearbyServiceAdvertiser(peer: localPeerID, discoveryInfo: nil, serviceType: ViewController.serviceType)
    advertiser.delegate = self
    advertiser.startAdvertisingPeer()
    print("advertising")
    }

    func startBrowsing() {
        let browser = MCNearbyServiceBrowser(peer: localPeerID, serviceType: ViewController.serviceType)
        browser.delegate = self
        browser.startBrowsingForPeers()
        print("browsing")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        startAdvertising()
        startBrowsing()
    }

}

extension ViewController : MCNearbyServiceAdvertiserDelegate, MCNearbyServiceBrowserDelegate {
    func advertiser(advertiser: MCNearbyServiceAdvertiser, didReceiveInvitationFromPeer peerID: MCPeerID, withContext context: NSData?, invitationHandler: (Bool, MCSession) -> Void) {

        print("received invitation")
    }

    func browser(browser: MCNearbyServiceBrowser, foundPeer peerID: MCPeerID, withDiscoveryInfo info: [String : String]?) {
        print("found peer \(peerID)")
    }

    func browser(browser: MCNearbyServiceBrowser, lostPeer peerID: MCPeerID) {

    }
}

然而,当我在连接到同一wifi网络的两台iPad(iOS 9)上运行时,它们不会发现彼此。我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,首先,您需要确保浏览器和广告客户的“实例”不会因为强烈引用它们而丢失。您可以通过声明实例变量来实现。与局部变量相关。

此外,您需要确保设备位于同一个wifi网络上,或者同时使用蓝牙和wifi。

Multipeer Connectivity仅在iOS之间工作,我相信有一个复杂的复杂api ..

在发现之后,您仍需要处理有关内容交换的大量逻辑。此外,如果您希望您的应用程序与Android一起使用,则无法实现。

如果可以的话,我建议您选择可以为您进行点对点通信的SDK,因为这样可以节省大量的开发和维护时间。

例如尝试:http://www.p2pkit.iohttp://www.intromi.cohttp://www.underdark.io或谷歌附近

我希望这会有所帮助......

免责声明:我为Uepaa工作,为Android和iOS开发p2pkit.io。