gpt4 book ai didi

iOS Multipeer Connectivity - 在自定义 MCNearbyServiceBrowser 中显示 DiscoveryInfo

转载 作者:行者123 更新时间:2023-11-28 19:01:24 25 4
gpt4 key购买 nike

如果您能为实现此方案提供任何帮助,我们将不胜感激。

  1. 我的“广告商”同行需要发送一个短文本作为 DiscoveryInfo。

  2. 然后“浏览器”节点将在表格中显示所有可用广告商的 DisplayName 和 DiscoveryInfo。

我已经编写了一个自定义 SessionContainer 并且它可以工作,但我不知道如何通过广告商发送 DiscoveryInfo 并将其显示在浏览器对等体中。 (我正在使用 MCNearbyServiceBrowser)

如有任何帮助,我们将不胜感激!

最佳答案

MCBrowserViewController 提供了一个标准的用户界面,允许用户选择附近的对等点以添加到 session 中。

如果你想要一个定制的浏览器,你应该使用 MCNearbyServiceBrowser。这使您的应用程序可以通过支持特定类型(您指定的) session 的应用程序以编程方式搜索附近的设备。

浏览器的创建如下所示:

self.thisPeer = [[MCPeerID alloc] initWithDisplayName:@"Peer Name"];
self.session = [[MCSession alloc] initWithPeer:self.thisPeer ];
self.session.delegate = self;

self.serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.thisPeer serviceType:<lowercase 1-15 chars>
self.serviceBrowser.delegate = self;
[self.serviceBrowser startBrowsingForPeers];

广告商的创建如下所示:

NSString *deviceName = [[UIDevice currentDevice] name];
MCPeerID *peerID = [[MCPeerID alloc] initWithDisplayName:deviceName];
self.session = [[MCSession alloc] initWithPeer:peerID];
self.session.delegate = self;

NSMutableDictionary *info = [NSMutableDictionary dictionaryWithObject:@"other info" forKey:@"peerInfo"];
self.advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:peerID discoveryInfo:info serviceType:<same service name as browser>];
self.advertiser.delegate = self;
[self.advertiser startAdvertisingPeer];

当浏览器听到附近的点时,它的委托(delegate)方法被调用:

- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info {
NSLog(@"Found a nearby advertising peer %@ withDiscoveryInfo %@", peerID, info);
[[NSNotificationCenter defaultCenter] postNotificationName:@"peerConnectionChanged" object:info];
}

在这里你可能会发布一个通知,你的 TableView Controller 可以监听。然后,您的 UITableView 可以显示 discoveryInfo 字典中包含的任何信息。请注意,您需要切换到主线程来更新 UI

当您准备好邀请对等方加入您要调用的 session 时

[self.serviceBrowser invitePeer:peerID toSession:self.session withContext:nil timeout:30];

关于iOS Multipeer Connectivity - 在自定义 MCNearbyServiceBrowser 中显示 DiscoveryInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24987580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com