我正在使用此方法要求附近的设备加入会话: 当我这样做时,我也开始旋转一个指标
[browser invitePeer:key
toSession:session
withContext:nil
timeout:30];
是否有超时时刻调用的方法?如果其他设备超出范围怎么办?
编辑:
我注意到这个状态从未被调用过:
if (state == MCSessionStateConnecting) {
NSLog(@"CONNECTING %@", peerID);
}
答案 0 :(得分:4)
如果浏览器端超时,则需要注意MCSessionStateNotConnected状态。我做这样的事情:
- (void)session:(MCSession *)session
peer:(MCPeerID *)peerID
didChangeState:(MCSessionState)state
{
if (state == MCSessionStateNotConnected)
{
if (self.isWaitingForInvitation)
{
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"ERROR_TITLE", nil)
message:NSLocalizedString(@"ERROR_TEXT", nil)
delegate:self
cancelButtonTitle:NSLocalizedString(@"NO", @"Não")
otherButtonTitles:NSLocalizedString(@"YES", @"Sim"),
nil];
dispatch_sync(dispatch_get_main_queue(), ^{
[alertView show];
});
self.isWaitingForInvitation = NO;
}
}
使用dispatch_sync立即弹出警报。
答案 1 :(得分:0)
使用具有匹配超时参数的计时器间隔的计时器可能更好。