【发布时间】:2014-01-11 20:38:51
【问题描述】:
我不明白这有什么意义。我将两个对象放在我创建的 MCNearbyServiceAdvertiser 对象内的 discoveryinfo 字典中,并且浏览器看不到广告商,但是当我将第二个对象移出字典并在行尾将其注释掉时,浏览器会看到广告商。 discoveryinfo 字典是否只接受一个对象才能工作?我有一个字符串作为第一个对象,一个数组作为第二个对象。这是它的样子:
advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:myPeerID discoveryInfo:@{@"Name": [[NSString alloc] initWithString:myUniqueID], @"Peers": [[NSArray alloc] initWithArray:connectedPeersAry]} serviceType:@"Blahblah"];
在那一行之前,我尝试了这种更简单的格式(但为了以防语法出现问题,请转到上面):
advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:myPeerID discoveryInfo:@{@"Name": myUniqueID, @"Peers": connectedPeersAry} serviceType:@"FRCSCOUT"];
我想我可以在 discoveryinfo 字典中放置一个字典或数组,但我觉得这是一种非常愚蠢的做事方式,因为在任何情况下字典都不应该仅限于一个对象。
我将继续将我的对象放在另一个层中,以在 discoveryinfo 字典中“节省空间”,但是如果你们中的任何人找到更好的做事方式或遇到同样的问题,请告诉我.
【问题讨论】:
-
附带问题:为什么要在广告中传输已连接的对等点列表?
-
一开始我完全误解了 Multipeer Connectivity API。我原以为 Advertiser 角色基本上创建了一个“聊天室”,而 Browser 角色要求加入,这不是它应该的方式。这意味着广告商基本上说它可以加入一个组,并且浏览器邀请特定的浏览器加入该组。我拥有已连接对等点列表的原因是因为我不希望在同一组已连接对等点中我的应用程序中出现重复的数据记录/共享角色。