5

我在 IOS7 中使用Multipeer Connectivity Framework来制作聊天应用程序。我正在使用内置的MCBrowserViewController来显示附近对等点的列表。

我想在附近的同行列表中包含广告客户的个人资料信息。这样浏览器就会看到一个列表,其中包含有关附近对等点的图像和一些数据。

我认为可以通过在广告商初始化时通过discoveryInfo传递数据来完成。我像这样传递discoveryInfo数据:

// create Discovery Info
NSArray *objects=[[NSArray alloc] initWithObjects:@"datguy",@"28", nil];
NSArray *keys = [[NSArray alloc] initWithObjects:@"Name",@"Age", nil];
self.dictionaryInfo = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];

//  Setup Advertiser
self.advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"txt_msg_service" discoveryInfo:self.dictionaryInfo session:self.advertiseSession];
[self.advertiser start];

但是有没有办法创建一个自定义的 MCBrowserViewController 来在另一端显示 discoveryInfo 而不是使用内置的?有没有人有任何示例代码?

4

1 回答 1

1

我建议创建您自己的 tableView 以显示您的 MCBrowser 中的附近设备列表。

我正在使用方便的方法创建一个包装器,以便您可以更轻松地填充附近的设备。https://github.com/thkien/THMultipeer

在开始广播之前,首先根据需要设置您的发现信息(这包括广告和浏览):

THMultipeer.me().serviceType = "thkeen-test"
THMultipeer.me().info = ["model": UIDevice.currentDevice().model]
THMultipeer.me().broadcast()

现在您可以完全控制如何填充 UI。您需要做的就是在视图控制器中实现委托:

- (void)multipeerNewPeerFound:(MCPeerID*)peerID withName:(NSString*)name andInfo:(NSDictionary*)info atIndex:(NSInteger)index;
- (void)multipeerPeerLost:(MCPeerID*)peerID atIndex:(NSInteger)index;
- (void)multipeerAllPeersRemoved;

如果您想获取所有对等点的列表,只需调用:THMultipeer.me().peers(Swift 语言)

图书馆已经处理了一切。然而我没有完成的部分是自定义 MCSession,我只完成了Discovery部分。希望我能在 2 - 4 周内完成它。该库在 Objective-C 中,因此它应该是向后兼容的。

于 2014-08-22T09:15:51.190 回答