【发布时间】:2016-05-01 04:45:17
【问题描述】:
我正在 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) 上运行它时,它们不会发现彼此。我做错了什么?
【问题讨论】:
-
您应该将
browser和advertiser保存在属性中而不是局部变量中,因为一旦函数退出它们就会被释放 -
@Paulw11 我修好了,但还是不行:(
-
@Paulw11 问题已解决,非常感谢)
标签: ios swift multipeer-connectivity