gpt4 book ai didi

广告商和浏览器的 iOS Multipeer 连接

转载 作者:行者123 更新时间:2023-11-29 02:47:31 26 4
gpt4 key购买 nike

我的设置是这样的:我同时运行 0 到 8 个设备,并且可以随时添加或删除设备。

我想使用 iOS 7 Multipeer 框架来连接它们。我让它在受控环境中工作,我可以在广告商模式下启动 1-7 台设备,然后在浏览器模式下启动一台设备,它们都连接起来。

我不确定的是,我应该如何知道设备在启动时是否需要处于广告模式或浏览器模式?我试过默认为广告商模式 X 秒然后切换到浏览器,问题是所有设备可能同时启动并同时关闭广告商模式。

我还考虑过在广告商和浏览器模式下运行设备,但最初的问题是设备会自行发现。此外,我相信我少了 1 台设备可以通过这种方式连接。

我确定有推荐的设置方法,但我找不到任何不假设有固定浏览器和广告商的方法,有人对此有建议吗?

最佳答案

让所有设备既是广告商又是浏览器很容易,这是一种正常行为(我很确定文档中提到了这一点,我将搜索它并稍后添加链接)。

我在设备 self 发现方面没有遇到问题,也许您正在为同一设备创建两个对等 ID?

您可能想查看 PLPartyTime's implementation这个的。它只有一些简单的检查来查看是否需要连接/接受连接。

广告客户代表

- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser
didReceiveInvitationFromPeer:(MCPeerID *)peerID
withContext:(NSData *)context
invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler
{
// Only accept invitations with IDs lower than the current host
// If both people accept invitations, then connections are lost
// However, this should always be the case since we only send invites in one direction
if ([peerID.displayName compare:self.peerID.displayName] == NSOrderedDescending)
{
invitationHandler(YES, self.session);
}
}

浏览器委托(delegate)

- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info
{
// Whenever we find a peer, let's just send them an invitation
// But only send invites one way
// TODO: What if display names are the same?
// TODO: Make timeout configurable
if ([peerID.displayName compare:self.peerID.displayName] == NSOrderedAscending)
{
NSLog(@"Sending invite: Self: %@", self.peerID.displayName);
[browser invitePeer:peerID
toSession:self.session
withContext:nil
timeout:10];
}
}

您可能还想 check out my fork ,稍微小一点,并且 browseradvertiser是单独的对象。

关于广告商和浏览器的 iOS Multipeer 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920222/

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