以编程方式实现 MultiPeerConnectivity

MultiPeerConnectivity programmatically

我正在制作一个在手机之间传输数据的应用程序。如何在没有 MCBrowserViewController

的情况下以编程方式连接和接受来自另一台设备的连接请求

我在multipeer connectivity framework工作,希望能帮到你。

第 1 步:

您可以使用 MCNearbyServiceAdvertiser 通过自定义服务类型为自己做广告,例如:

let advertiser = MCNearbyServiceAdvertiser.init(peer: *peerID*, discoveryInfo: *dict*, serviceType: *custom_service_type*)

设置委托,开始宣传自己。

第 2 步:

在其他设备中,用户 MCNearbyServiceBrowser

let browser = MCNearbyServiceBrowser.init(peer: *peerID*,serviceType: *custom_service_type*)

设置委托并开始浏览同行用户。

第 3 步:

当浏览器发现一些用户处于同一 Wi-fi 网络且具有相同的服务类型时,您将收到一个委托回调到

func browser(_ browser: MCNearbyServiceBrowser, foundPeer peerID: MCPeerID, withDiscoveryInfo info: [String : String]?)

第 4 步:

手动尝试连接到对等点

browser.invitePeer(*peerID*, to: *session*, withContext: nil, timeout: 30)

第 5 步:

在第一个设备中,您将在委托方法中收到一个回调,说明对等设备想要连接

func advertiser(_ advertiser: MCNearbyServiceAdvertiser, didReceiveInvitationFromPeer peerID: MCPeerID, withContext context: Data?, invitationHandler: @escaping (Bool, MCSession?) -> Void)

使用真值调用完成处理程序并共享您的会话

invitationHandler(true,*session*)

这里我们不需要任何用户交互。所有都以编程方式完成(这是您的要求)。

注:

  1. 广告商和浏览器的服务类型必须相同。
  2. 确保您确认协议(MCNearbyServiceAdvertiserDelegate、MCNearbyServiceBrowserDelegate)。
  3. 确保在执行所有这些步骤之前已正确初始化会话。