【问题标题】:MCNearbyServiceAdvertiser Multi-Object DiscoveryInfoMCNearbyServiceAdvertiser 多对象发现信息
【发布时间】: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 角色要求加入,这不是它应该的方式。这意味着广告商基本上说它可以加入一个组,并且浏览器邀请特定的浏览器加入该组。我拥有已连接对等点列表的原因是因为我不希望在同一组已连接对等点中我的应用程序中出现重复的数据记录/共享角色。

标签: multipeer-connectivity


【解决方案1】:

discoveryInfo 字典中可以有多个对象,但请记住,字典将被编码在 Bonjour TXT 记录中。这对可以放入该字典的内容施加了一些限制。

正如documentation 中的[MCNearbyServiceAdvertiser initWithPeer:discoveryInfo:serviceType:] 所述:

此数据使用 Bonjour TXT 记录进行宣传,根据 RFC 6763(第 6 节)进行编码。结果:

  • 以 UTF-8 格式编码时,键值对必须不超过 255 个字节(总计),键和值之间使用等号 (=)。
  • 键不能包含等号。

为获得最佳性能,此字典中键和值的总大小不应超过 400 字节,以便整个广告可以容纳在单个蓝牙数据包中。

【讨论】:

    【解决方案2】:

    嗯,找到了我的问题。正如 Apple 在 MCNearbyServiceAdvertiser 的类参考中引用的那样:

    “discoveryInfo 的内容将在 Bonjour TXT 记录中公布,因此您应该保持字典较小以获得更好的发现性能。”

    所以,看来我将不得不使用某种逗号分隔的字符串...

    编辑

    我误解了 Multipeer Connectivity API。我认为角色互换了,广告商基本上是 Multipeer Session 的公共主机,但它应该是邀请广告商的浏览器。我现在只生成了唯一 ID 作为发现信息。

    感谢大家的帮助,并对我的 API 混淆表示歉意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-10
      • 2019-09-26
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2020-08-03
      相关资源
      最近更新 更多