2014-01-27 28 views
1

我试图通过iOS 7中的Multipeer连接框架连接2个iOS 7设备。 我可以使用蓝牙连接它们。在代码中我没有提到任何类似蓝牙。iOS 7:通过Wi-Fi或点对点无线连接使用Multipeer连接设备

Multipeer Documentation

的Multipeer连接框架提供了发现通过使用基础设施的Wi-Fi网络附近的iOS设备,对等网络的Wi-Fi和蓝牙个人区域网络提供服务,并随后与这些服务进行通信的支持通过发送基于消息的数据,流数据和资源(如文件)。

如果,我关掉蓝牙的设备之一,它停止工作。

为,蓝牙范围是很慢的,我需要大面积覆盖。那么,请告诉我如何通过Wi-Fi或点对点无线网络连接两台设备?

代码:.h文件中

@interface SessionManager : NSObject <MCSessionDelegate, MCAdvertiserAssistantDelegate, MCBrowserViewControllerDelegate> 

// current peer 
@property (nonatomic, readonly) MCPeerID *myPeer ; 

// current session 
@property (nonatomic, readonly) MCSession *session; 

// current advertise 
@property (nonatomic, readonly) MCAdvertiserAssistant *advertiser ; 

// current browser 
@property (nonatomic, readonly) MCBrowserViewController *browser ; 

//To start advertising current device 
- (void)start; 

//To stop advertising current device 
- (void)stop; 

@end 

.m文件:

- (id)init 
{ 
    self = [super init]; 

    if (self) 
    { 
     _myPeer = [[MCPeerID alloc] initWithDisplayName:[[UIDevice currentDevice] name]]; 

     _session = [[MCSession alloc] initWithPeer:_myPeer securityIdentity:nil encryptionPreference:MCEncryptionNone]; 
     _session.delegate = self; 

     _advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"Connect" discoveryInfo:nil session:_session]; 
     _advertiser.delegate = self; 

     _browser = [[MCBrowserViewController alloc] initWithServiceType:@"Connect" session:_session]; 
     _browser.delegate = self; 
    } 

    return self; 
} 

- (void)start 
{ 
    [_advertiser start]; 
} 

任何帮助表示赞赏。

回答

9

MultipeerConnectivity从基础设施的Wi-Fi,P2P和蓝牙提供一个抽象的路程。这意味着您的设备将会彼此通信,但他们是有能力的。

如果可以连接蓝牙两台设备,然后他们也可以连接在基础设施的wifi,只要他们在同一个局域网上,没有任何限制(所以,如果你在一家大公司,你可能有这一点,因为一些问题的IT)。

MPC允许您与通过完全不同的传输连接的多个设备进行通信。因此,如果A,B和C都是可以使用您指定的UUID发现和连接的设备,A只有蓝牙,B有蓝牙和WIFI,C只有WIFI,A会自动接收来自C的消息,因为B负责完成响铃。

所有这些功能都由MultipeerConnectivity提供。

有关如何正确地发现,连接,并与同行交流检查出WWDC视频演练“与附近的Multipeer连接网络” here

+0

我已经看过这部影片,只有使用的实现代码...但我想使用WiFi有连接 –

+0

一个英俊的范围如果你遵循了这一视频,然后就可以通过WiFi连接已连接的设备,只要确保设备在同一个局域网中,并且都启用了wifi。您可以关闭蓝牙以确保安全。需要明确的是,我的理解,是没有办法指定连接通过蓝牙或WiFi,它只是连接但是它为所欲为 – JuJoDi

0

选中的答案是错误的,因为框架不跑过来LAN ,而是低一级,直接访问蓝牙或WI-FI。换句话说,您不需要在具有相同SSID的同一网络上,只需启用WI-FI即可。让两台设备从局域网中注销,例如关闭您的路由器和蓝牙,并且您会注意到它们仍然可以连接。然而,从某种意义上讲,你无法直接告诉框架直接使用蓝牙或WI-FI,因为苹果决定为我们自动化这一部分。