この質問は以前にも聞かれたことは知っていますが、私の特定のケースでなぜうまくいかないのか疑問に思っていました.
あるView Controllerからマルチピア接続から招待を送信し、別のView Controllerで受信しようとしています。それを送信するための私のコードは次のとおりです。
[self invitePeer:selectedPeerID toSession:self.mySession withContext:nil timeout:timeInterval ];
メソッドは空白です:
- (void)invitePeer:(MCPeerID *)peerID toSession:(MCSession *)session withContext:(NSData *)context timeout:(NSTimeInterval)timeout
{
}
受信と招待のための私のコードは次のとおりです。
- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler
{
// http://down.vcnc.co.kr/WWDC_2013/Video/708.pdf -- wwdc tutorial, this part is towards the end (p119)
self.arrayInvitationHandler = [NSArray arrayWithObject:[invitationHandler copy]];
// ask the user
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:peerID.displayName
message:@"Would like to create a session with you"
delegate:self
cancelButtonTitle:@"Decline" otherButtonTitles:@"Accept", nil];
[alertView show];
}
- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
// retrieve the invitationHandler and check whether the user accepted or declined the invitation...
BOOL accept = (buttonIndex != alertView.cancelButtonIndex) ? YES : NO;
// respond
if(accept) {
void (^invitationHandler)(BOOL, MCSession *) = [self.arrayInvitationHandler objectAtIndex:0];
invitationHandler(accept, self.mySession);
}
else
{
NSLog(@"Session disallowed");
}
}
すべてのデリゲート メソッドと同じサービス タイプを正しく設定しました。しかし、セッションを開始しようとすると、クリックしたテーブルビューセルが強調表示されたままになります...
私はinvitePeer toSessionメソッドに何かを入れなければならないと思っていますが、よくわかりません...
これは、コードで参照されているマルチピア接続に関する Apple の wwdc トークから直接コピーしたものです。
これを機能させる方法について何か提案はありますか??