【发布时间】:2020-02-22 02:34:35
【问题描述】:
我正在尝试构建一个基本应用程序,以使用 Multipeer Connectivity Framework 在附近的 iOS 设备之间发送消息。我尝试了很多教程,但似乎在 Xcode 11 中浏览附近的设备并接受请求并不能像以前那样工作。
这是我的视图控制器和委托方法:
import UIKit
import MultipeerConnectivity
class ViewController: UIViewController,MCSessionDelegate,MCBrowserViewControllerDelegate {
var peerID: MCPeerID?
var session: MCSession?
override func viewDidLoad() {
super.viewDidLoad()
peerID = MCPeerID(displayName: UIDevice.current.name)
session = MCSession(peer: peerID!, securityIdentity: nil, encryptionPreference: .none)
session!.delegate = self
}
func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {
switch state {
case .connected: print("Connected to \(peerID.displayName)")
case .connecting: print("Connecting: \(peerID.displayName)")
case .notConnected: print("Not Connected: \(peerID.displayName)")
default: print("")
}
}
func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
}
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) {
browserViewController.dismiss(animated: true, completion: nil)
}
func browserViewControllerWasCancelled(_ browserViewController: MCBrowserViewController) {
browserViewController.dismiss(animated: true, completion: nil)
}
}
我在 UI 中添加了 2 个按钮,一个用于托管,另一个用于加入。方法如下:
@IBAction func hostBtnTapped(_ sender: Any) {
hostSession()
}
@IBAction func joinBtnTapped(_ sender: Any) {
joinSession()
}
他们打电话:
func hostSession() {
let advertiser = MCAdvertiserAssistant(serviceType: "mg-testing", discoveryInfo: nil, session: session!)
advertiser.start()
}
func joinSession() {
let browser = MCBrowserViewController(serviceType: "mg-testing", session: session!)
browser.delegate = self
self.present(browser, animated: true, completion: nil)
}
当我编译并运行它时,一切看起来都很好。我在我的第一台设备中单击“主机”并在我的第二台设备中进入“加入”模式(MCBrowserViewController 出现),但加入设备从未检测到托管设备。控制台没有输出,也没有错误。加入设备的“正在搜索...”指示器会永远转动,附近不会出现任何设备。这可能是什么原因造成的?我该如何解决?我正在使用 Xcode 11.0 和 iOS 12 & 13。
【问题讨论】:
标签: ios swift multipeer-connectivity