我如何使用5台iDevice弹钢琴(MultipeerConnection框架)

iOS开发人员使用Multipeer Connection框架来创建多种设备体验,例如多人游戏。 该框架基于bonjour协议构建,在iOS 7中实现并在WWDC 2013上展示,尽管多年来失去了光芒,但MPC仍然是一个了不起的工具。 本文旨在为您提供Multipeer Connection框架应用程序的简单实现:使用多个设备弹钢琴。 所以,走吧!

该项目可以从GitHub下载:

leodegeus7 / MultipeerKeyboard
MultipeerKeyboard —一个iOS Multipeer连接键盘。 github.com

目录:

  • iOS Multipeer Connection如何工作?
  • 如何在设备之间传递信息?
  • 如何实现多对等连接?
  • 如何用MPConnection创建钢琴?

iOS Multipeer Connection如何工作?

Multipeer Connectivity框架使用设备无线功能来检测运行相同框架的附近设备,从而使小工具之间的通信成为可能。 因此,它使用Wifi和蓝牙在iPad和iPhone之间交换信息,以创建多人游戏应用或给人留下深刻印象。

如何在设备之间传递信息?

要在两台设备之间传递信息,您的应用需要建立一个对等会话进行通信。 为了阐明这种连接是如何工作的,请想象以下情况:两个需要互相交谈的人,Marco和Alex。

  1. Marco打电话给他周围的每个人。
  2. 亚历克斯正在寻找附近的人聊天。
  3. 当Alex听到Marco打电话时,他以连接请求答复Marco。
  4. Marco可以接受或拒绝Alex的请求。 如果Marco接受了请求,则将在它们之间创建一个“梨对梨”的会话,现在,他们可以双方交谈了。

超级容易!

为了加点I并与T交叉,我们将广告称为Marco,将广告称为Browser。 因此现在我们可以了解Multipeer Connection操作。

如何实现多对等连接?

要实现多对等连接,我们需要使用三个委托:MCNearbyServiceBrowserDelegate,MCNearbyServiceAdvertiserDelegate和MCSessionDelegate。 如果您阅读了上一个会话,则可以猜测每个代表可以做什么。 因此,使用Xcode创建一个类并导入MultipeerConnectivity框架。 要管理会话和对等方,我们需要实例化一些变量,例如会话,peerId(设备标识),保留广告商的服务和保留浏览器的服务。

最后,我们需要实现代表:

MCNearbyServiceBrowserDelegate

使用此委托,您可以看到MultiConnection服务在其他设备中进行搜索。 当框架找到其他设备时,它将自动邀请对等方进行连接。 我建议您创建班级的扩展以使事情井井有条:

MCNearbyServiceAdvertiserDelegate

使用MCNearbyServiceAdvertiserDelegate可以接受来自浏览器的邀请。 为了使事情井井有条,我创建了一个梨子数组每个新梨子都附加到梨子数组中。 以下代码中最重要的一行是InvitationHandler(true,self.session),通过此行,您可以创建逻辑来选择广告客户是否要接受或拒绝来自浏览器的邀请。 我选择接受来自所有浏览器的所有邀请。

MCSessionDelegate

最后的委托是最重要的部分,因为使用MCSessionDelegate可以从会话接收和发送数据。 在Controller中接收会话数据的最佳方法是实施协议。

协议使我们能够以简便的方式在控制器之间交换数据。 因此,创建一个名为PeerServiceManagerDelegate的协议并添加两个函数: connectedDevicesChangedcontentChanged

控制器初始化

为了完成我们的实现,我们需要编写init,deinit和send方法。 在init方法中,我们初始化并启动我们的服务,例如广告商和浏览器。 使用deinit可以相反,我们停止服务以避免内存问题和不必要的处理。 并使用send(string:String)将字符串发送到其他梨。

如何用MPConnection创建钢琴?

到目前为止,我们已经创建了用于管理梨对梨连接的类。 因此,我们需要找到一种使用此方法的方法,对吗? 我找到了最适合您的解决方案:钢琴:D。

我的方法是在一个iDevice(广告商)中创建五个键,然后将其他键配置为浏览器,播放各自的音符(Do,Re,Mi,Fa,Sol)。 因此,使用五台设备,我们将拥有一台音符设备。 如果我有两个设备? 我可以玩吗? 当然可以,只需将更多笔记按设备分组即可。

让我们实现我们的钢琴! 首先,在ViewController中,导入MultipeerConnectivity并实现PeerServiceManagerDelegate。 为此,我们需要实例化在上一节中创建的管理器并在ViewController中设置委托,不要忘记将以下代码放入viewDidLoad中:

peerService.delegate =自我

并通过扩展类来实现委托:

由于本教程的目的是显示Multipeer连接实现,因此我将不进一步介绍该实现。 但是,您可以在我的GitHub帐户上查看其余内容:

leodegeus7 / MultipeerKeyboard
MultipeerKeyboard –一个iOS Multipeer连接键盘。 github.com

谢谢阅读!

s

Leonardo A. de Geus https://github.com/leodegeus7 |

https://www.linkedin.com/in/leodegeus7/

Dilermando Barbosa https://github.com/dbarbos |

https://www.linkedin.com/in/dilermandob/