iOS:如何在一个iPad中像App一样开发iPad应用程序成为pipe理员和同一个App的其他iPad成为Listner

我需要创build一个以下要求的iPad应用程序:

  1. 假设有4个iPad安装了这个应用程序。

  2. 现在,iPad应用程序之一成为演讲者,所以其他3个具有相同应用程序的iPad自动成为监听器。

  3. 现在,Presenter iPad的用户将从应用程序的照片库中滑动图片。 所以同样的图片应该会自动从听众所有3个iPad的应用程序照片库中滑出。

我search了很多,但我什至不知道如何实现这个function。

我可以使用点对点networking来实现这个function吗?

请帮助我下面的主题:

  1. 有没有我可以用来实现这个function的任何外部框架。

  2. 我应该使用哪个框架来启动这个应用程序。

  3. 点对点框架能够实现这一function。

  4. 我只想提示如何启动这个应用程序?

提前致谢……

如果您很高兴仅支持iOS7,则可能需要调查Multipeer连接框架( https://developer.apple.com/library/ios/documentation/MultipeerConnectivity/Reference/MultipeerConnectivityFramework/Introduction/Introduction.html )。

看来,这将实现你所需要的一切:

A)成为演示者 – 您可以使用MCAdvertiserAssistant将自己声明为演示者或MCNearbyServiceAdvertiser,如下所示:

MCNearbyServiceAdvertiser *advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:@"myPeerID" discoveryInfo:nil serviceType:@"ServiceA"]; self.advertiser.delegate = self; [self.advertiser startAdvertisingPeer]; 

peerID定义了当他们浏览演示者时将被呈现给潜在的监听者的名字。

服务types定义您正在广告的服务。

B)成为一个监听器 – 您可以使用MCNearbyServiceBrowser浏览使用委托方法,或者如果您想要一个方便的预buildUI使用MCBrowserViewController像这样:

 MCPeerID *peerID = [[MCPeerID alloc] initWithDisplayName:[[UIDevice currentDevice] name]]; self.session = [[MCSession alloc] initWithPeer:peerID securityIdentity:nil encryptionPreference:MCEncryptionNone]; self.session.delegate = self; MCBrowserViewController *browserViewController = [[MCBrowserViewController alloc] initWithServiceType:@"ServiceA" session:self.session]; browserViewController.delegate = self; [self presentViewController:browserViewController animated:YES completion:nil]; 

同样,peerID是您尝试连接到演示者时将显示的名称。

会话处理多个对等体之间的通信。 我会让你进一步调查。

服务types是您感兴趣的服务。因此,当呈现此视图时,将显示提供@“ServiceA”的所有广告商。 幸运的是,你已经有一个主持人广告这项服务! 所以他们应该出现在列表中,你可以select它们来启动一个连接。 此时,演示者将收到一个连接请求。

我认为超级性感的是,Multipeer连接框架将为您提供最好的连接方式,使用蓝牙,本地WiFi或Peer-toPeer Wifi,无论它是什么感觉都是最好的。

所以,现在你们都连接起来了,iPadA连接到iPadB,有时间利用这个神话般的联盟。

C)发送数据:从前面的步骤,你将有一个MCSession实例为演讲者和观众。

要发送数据(Maybe参考到当前显示的图像,或者您希望听众看到的实际图像),可以通过会话实例执行此操作,如下所示:

 [self.session sendData:data toPeers:[self.session connectedPeers] withMode:MCSessionSendDataReliable error:&error]; 

数据是你想发送的一些NSdata。 请注意,您也可以发送其他types的数据,如URL内容(sendResourceAtURL:toPeer:withTimeout:completionHandler :)或者您可以设置一个stream(startStreamWithName:toPeer:错误:)

为了接收你使用MCSessionDelegate提供的委托方法的数据,你可以使用你的MCSession实例(self.session.delegate = self;)来设置它。

首先,您最感兴趣的委托方法是:

 - (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID { //Do something with data (Present the defined image perhaps?) } 

之后,您可以调查所有其他可爱的委托方法MCSession previdederror handling等

谢谢

TG

试试看Bonjour的服务。 我个人会推荐你下面的书: iOS编程:大书呆子牧场指南