2013-07-31 4 views
2

Multipeer 연결 프레임 워크로 iOS 7 앱을 만들고 있지만 두 장치가 서로 인식하도록 할 수 없습니다. 설명서와 wwdc 비디오를 살펴 보았습니다.이 프레임 워크에 대한 정보는 그 외에도 매우 제한적입니다. 누구나 새로운 피어 - 투 - 피어 기능을 사용해 본 경험이 있으며 도움이 될 수 있습니까?iOS 7 Multipeer Connectivity

기본적으로 내가 지금까지 가지고있는 것입니다. browserVC가 화면에 표시되지만 두 대의 기기에서 앱을 실행할 때 기기를 찾을 수 없습니다.

MCPeerID *peer = [[MCPeerID alloc] initWithDisplayName:@"user"]; 
    _session = [[MCSession alloc] initWithPeer:peer]; 
    NSString *service = @"nsync"; 

    _session.delegate = self; 

    MCAdvertiserAssistant *assistant =[[MCAdvertiserAssistant alloc] initWithServiceType:service 
                     discoveryInfo:nil 
                       session:_session]; 
    [assistant start]; 


    MCBrowserViewController *browserVC = [[MCBrowserViewController alloc] initWithServiceType:service 
                        session:_session]; 
    browserVC.delegate = self; 
    [self presentViewController:browserVC 
        animated:YES 
        completion:nil]; 
+1

이 질문은 정말이에요 수 없습니다 질문에 대한 답을 구체적으로하거나 Stack Exchange 채팅이나 IRC와 같은 다른 포럼에서 질문 할 수 있습니다. –

+0

그리고 Apple 개발자 포럼이 다시 생겨 났으므로 다시 시도해야합니다. – Abizern

+0

알겠습니다. 고마워요. 여전히 개발자 포럼에 액세스 할 수 없지만 조만간 개발자 포럼에 액세스 할 수 있어야합니다. –

답변

1

MCAdvertiserAssistant * assistant를 로컬 변수로 선언하지 말고 클래스 멤버로 선언하십시오.

2

브라우저에서 기기를 볼 수있게하려면 광고중인 다른 기기가 있어야합니다. 귀하의 문제는 MCAdvertiserAssistant가 범위를 벗어나 deallocated된다는 것입니다. 로컬 변수에만 저장되어 있기 때문입니다. 그것은을 작성하는 방법으로 즉시 해제되지 않도록, 나는 속성에 광고주 보조를 저장하고있어

#define SERVICE_TYPE @"MyServiceType" 
... 

@property (nonatomic, strong) MCAdvertiserAssistant* advertiserAssistant; 
... 

self.peerId = [[MCPeerID alloc] initWithDisplayName:[[UIDevice currentDevice] name]]; 
self.advertiserSession = [[MCSession alloc] initWithPeer:self.peerId]; 
self.advertiserSession.delegate = self; 
self.advertiserAssistant = [[MCAdvertiserAssistant alloc] initWithServiceType:SERVICE_TYPE discoveryInfo:nil session:self.advertiserSession]; 
[self.advertiserAssistant start]; 

참고 : 여기에

내가 광고를 사용했던 코드 끝내라. 그리고

는 검색하기 :

self.peerId = [[MCPeerID alloc] initWithDisplayName:[[UIDevice currentDevice] name]]; 
self.browserSession = [[MCSession alloc] initWithPeer:self.peerId]; 
self.browserSession.delegate = self; 
self.browser = [[MCBrowserViewController alloc] initWithServiceType:SERVICE_TYPE session:self.browserSession]; 
self.browser.delegate = self; 
[self presentViewController:self.browser animated:YES completion:nil]; 
0

내가 동의합니다.

나는 어제 이것을 시험해 본다. 그것은 매력처럼 작동한다. 귀하의 코드는 MCAdvertiserAssistant을 제외하고 올바른 것으로 보입니다. 전역 변수로 설정해야합니다!

그렉이 말했듯이 적어도 Wi-Fi 또는 블루투스 (인터넷에 연결되어 있지 않음)로 연결된 2 개의 기기에서 앱을 실행해야합니다. 셀룰러 네트워크에서는 작동하지 않습니다.

0

동의합니다. 나를 위해 일한 구문은 (적어도 서로 볼을 얻기 위해, 나는 여전히 :) 문제가 받아 초대장을 받고 ... 데 : 나중에 다음

@property (strong, nonatomic) MCSession *theSession; 
@property (strong, nonatomic) MCAdvertiserAssistant  *assistant; 
@property (strong, nonatomic) MCBrowserViewController  *browserVC; 

과,

UIDevice *thisDevice = [UIDevice currentDevice]; 

    MCPeerID *aPeerID = [[ MCPeerID alloc ] initWithDisplayName: thisDevice.name]; 
    self.theSession = [[ MCSession alloc ] initWithPeer: aPeerID ]; 
    self.theSession.delegate = self; 

    self.assistant = [[MCAdvertiserAssistant alloc] initWithServiceType:kServiceType 
                  discoveryInfo:nil 
                   session:self.theSession ]; 
    self.assistant.delegate = self; 
    [ self.assistant start ]; 

self.browserVC = [[MCBrowserViewController alloc] initWithServiceType:kServiceType session:self.theSession]; 
    self.browserVC.delegate = self; 
    [ self.window.rootViewController presentViewController:self.browserVC animated:YES completion:nil]; 

(나는 나의 주요 VC에서이 일을했기 때문에 rootViewController을 사용했다.)