MultipeerConnectivity 프레임 워크에 대해 알아 보려면 follow the WWDC talk으로 보내려고합니다. 많은 잘못된 시작 후에 브라우저에 동료가 표시되고 초대장이 발급됩니다.Multipeer Connectivity : 초대장 수락 (기본 제공 브라우저 VC 사용)
그러나 피어 장치에서 "Accept"를 누르면 브라우저는 "Connecting"을 끝내지 않고 계속 표시합니다. 나는 MCBrowserViewController
이 로직을 돌 보았고 브라우저의 사용자가 취소 또는 완료를 누를 때까지 기다릴 수 있고 대리자 메소드가 실행되었다고 생각했습니다. 나는 그것이 명백한 무엇인가 내기를했다. 그러나 그것은 나를 떠나고있다.
여기 관련 코드가 무엇을 희망합니다. AppDelegate에 있습니다. 다양한 델리게이트 메소드의 NSLog 문은 당연히 browserViewControllerDidFinish:
에있는 것을 제외하고는 예상대로 호출됩니다.
브라우저 및 초대장이 표시된다는 것을 명심하십시오. 무엇인가이 맞습니다!
static NSString* const kServiceType = @"eeps-multi";
// called from viewDidAppear in the main ViewController
-(void) startSession
{
if (!self.theSession) {
UIDevice *thisDevice = [UIDevice currentDevice];
MCPeerID *aPeerID = [[ MCPeerID alloc ] initWithDisplayName: thisDevice.name];
self.theSession = [[ MCSession alloc ] initWithPeer: aPeerID ];
self.theSession.delegate = self;
} else {
NSLog(@"Session init skipped -- already exists");
}
}
// called from viewDidAppear in the main ViewController
- (void) startAdvertising
{
if (!self.assistant) {
self.assistant = [[MCAdvertiserAssistant alloc] initWithServiceType:kServiceType
discoveryInfo:nil
session:self.theSession ];
self.assistant.delegate = self;
[ self.assistant start ];
} else {
NSLog(@"Advertiser init skipped -- already exists");
}
}
// called from the main ViewController in response to a button press
- (void) startBrowsing
{
if (!self.browserVC){
self.browserVC = [[MCBrowserViewController alloc] initWithServiceType:kServiceType
session:self.theSession];
self.browserVC.delegate = self;
} else {
NSLog(@"Browser VC init skipped -- already exists");
}
[ self.window.rootViewController presentViewController:self.browserVC animated:YES completion:nil];
}
사전에
덕분에 @implementation에서 @interface에서
...@property (strong, nonatomic) MCSession *theSession;
@property (strong, nonatomic) MCAdvertiserAssistant *assistant;
@property (strong, nonatomic) MCBrowserViewController *browserVC;
!
정말 고마워요. 그러면 디버깅 시간이 절약되었습니다. 방금 후에 구현하기 위해 모든 대리자 메소드를 던져서 didReceiveCertificate조차 알지 못했습니다. – cargath