我在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而不是使用内置的?有没有人有任何示例代码?
答案 0 :(得分: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中,因此它应该向后兼容。