Что GKSession не подключается при каждой попытке?
В приложении вызывается приглашение DidFail, иногда оно подключается правильно, а иногда нет...
какие могут быть возможные причины отказа в соединении?
// Display an alert sheet indicating a failure to connect to the peer.
- (void) invitationDidFail:(SessionManager *)session fromPeer:(NSString *)participantID
{
NSString *str;
if (alertView.visible) {
// Peer cancelled invitation before it could be accepted/rejected
// Close the invitation dialog before opening an error dialog
[alertView dismissWithClickedButtonIndex:0 animated:NO];
[alertView release];
str = [NSString stringWithFormat:@"%@ is busy.\nPlease again", participantID];
//[peerList removeAllObjects];
[self peerListDidChange:nil];
[self.tableData reloadData];
//[self TwoPlayer:self];
} else {
// Peer rejected invitation or exited app.
str = [NSString stringWithFormat:@"%@ is busy.\nPlease try again", participantID];
//[peerList removeAllObjects];
[self peerListDidChange:nil];
[self.tableData reloadData];
//[self TwoPlayer:self];
}
}
Даже если он не вызывает этот метод, он уверен, что устройство не сопряжено с каким-либо другим устройством, тогда каковы причины, по которым оно иногда принимает и вызывает метод didReceivedInvitation, или какое-то время оно отказывает, вызывая приглашение DidFail.
// Invitation dialog due to peer attempting to connect.
- (void) didReceiveInvitation:(SessionManager *)session fromPeer:(NSString *)participantID;
{
[alertView dismissWithClickedButtonIndex:1 animated:NO];
NSString *str = [NSString stringWithFormat:@"Incoming Invite from %@", participantID];
if (alertView.visible) {
[alertView dismissWithClickedButtonIndex:0 animated:NO];
[alertView release];
}
alertView = [[UIAlertView alloc]
initWithTitle:str
message:@"Do you wish to accept?"
delegate:self
cancelButtonTitle:@"Decline"
otherButtonTitles:nil];
[alertView addButtonWithTitle:@"Accept"];
[alertView show];
}
1 ответ
Когда я недавно писал приложение с использованием соединений, я использовал GKSession. Я потратил недели, пытаясь отладить проблемы с подключением, и в конце концов сдался и перестал им пользоваться. При подключении к GKSession возникает ряд проблем, особенно если вы отключаетесь, а затем пытаетесь подключиться в течение короткого времени (короткое время может составлять 1 минуту или более). Кажется, что соединение не сбрасывается должным образом, а затем не воссоздает соединение должным образом.
В конце я вынул весь код GKSession и использовал его вместо этого. Работал угощение - больше никаких проблем с подключением.