【发布时间】:2021-07-13 18:05:57
【问题描述】:
我正在制作一个在手机之间传输数据的应用程序。如何在没有 MCBrowserViewController 的情况下以编程方式连接并接受来自另一台设备的连接请求
【问题讨论】:
标签: ios swift5 p2p multipeer-connectivity
我正在制作一个在手机之间传输数据的应用程序。如何在没有 MCBrowserViewController 的情况下以编程方式连接并接受来自另一台设备的连接请求
【问题讨论】:
标签: ios swift5 p2p multipeer-connectivity
我曾在多点连接框架中工作,希望能对您有所帮助。
第 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*)
这里我们不需要任何用户交互。所有都以编程方式完成(这是您的要求)。
注意:
【讨论】: