2013-10-27 2 views
0

이미지가있어서 다른 기기로 블루투스를 통해 전송해야합니다.sendResourceAtURL 멀티 페어 IOS7

NSData *Recording = [NSData dataWithContentsOfFile:myFilePath]; 
NSString* str = [NSString stringWithFormat:@"%@.ext", button.titleLabel.text]; 
myDictionary = [[NSMutableDictionary alloc] init]; 
        [myDictionary setObject:str forKey:@"fileName"]; 
        [myDictionary setObject:@"Recording" forKey:@"fileType"]; 
        [myDictionary setObject:Recording forKey:@"FileData"]; 


NSData* myData = [NSKeyedArchiver archivedDataWithRootObject:myDictionary]; 

가 나는 다음과 같은 방법을 사용하여 MYDATA 또는 내 사전 중 하나를 보낼 필요가 : 데이터는이 당신이 내가 URL에서 자원을 보내야 볼 수 있듯이

progress = [session sendResourceAtURL:anUrl withName:[imageUrl lastPathComponent] toPeer:peerID withCompletionHandler:^(NSError *error) { 
     // Implement this block to know when the sending resource transfer completes and if there is an error. 
     if (error) { 
      NSLog(@"Send resource to peer [%@] completed with Error [%@]", peerID.displayName, error); 
     } 
     else { 
      // Create an image transcript for this received image resource 

     } 
    }]; 

를, 수신기는받을 것이다 "url"에있는 리소스와 그 url에서 NSMutabledictionary를 얻어야합니다. 기본적으로이 myDictionary를 보내야하지만 URL이 어떻게 작동하는지 파악하는 데 문제가 있습니다. 아무도 내가 사용하는 URL과 그것을 만드는 방법을 설명 할 수 있습니까?

답변

1

나는 당신이 원하는 것을 이해했다고 확신하지 못한다. 그러나 당신은 단순히 전달 지점에 머물러있는 것처럼 보인다. 이미이 같은 것을 호출 할 필요가 송신자 측에, 만일을 NSData 객체에 모든 것을 변환 한 이후

:

// Assume peerID is correct and data has been prepared 
NSError *error; 
if (![session sendData:data 
       toPeers:@[peerID] 
       withMode:MCSessionSendDataReliable 
        error:&error]) 
    NSLog(@"ERROR - Unable to queue message for delivery - %@",[error localizedDescription]); 

은 수신기 측에 있지만, 누구든지 MCSessionDelegate입니다 것은 통해 전화를받을 것이다 :

- (void)session:(MCSession *)session 
     didReceiveData:(NSData *)data 
       fromPeer:(MCPeerID *)peerID; 

여기서 NSData 객체를 "보관 ​​해제"하여 무언가를 할 가능성이 있습니다.

것은 나 또한 당신이 다음 보관 및 전송하는 사전에 파일의 전체 내용을 채우고있는 것처럼 보이는 당신의 예에서 관찰 ...

을 추가 할 수 있습니다. 아마 할 수 있지만 권장하지는 않습니다.

더 나은 방법은 별도의 리소스로 파일을 보내는 것입니다.

// Assume peerID and filePath are both valid and correct 
NSURL *fileURL = [NSURL URLWithString:filePath]; 
NSString *fileName = [fileURL lastPathComponent]; 
NSError *error; 
[session sendResourceAtURL:resourceURL 
        withName:fileName 
        toPeer:peerID 
    withCompletionHandler:^(NSError *error) { 
     if (error) 
      NSLog(@"Sending to [%@] failed: %@",peerID.displayName, error); 
    }]; 

수신기의 MCSessionDelegate 후 모두이 이전에 시작받을 것이다 : 예를 들어 보낸 사람이 샘플을보고

- (void)session:(MCSession *)session 
     didStartReceivingResourceWithName:(NSString *)resourceName 
           fromPeer:(MCPeerID *)peerID 
          withProgress:(NSProgress *)progress; 

을 ... 그리고 이것은 전송이 끝날 때 :

- (void)session:(MCSession *)session 
     didFinishReceivingResourceWithName:(NSString *)resourceName 
            fromPeer:(MCPeerID *)peerID 
            atURL:(NSURL *)temporaryURL 
           withError:(NSError *)error; 
관련 문제