2013-10-04 6 views
5

누구나 문서 폴더에서 파일을 보내고 받기 위해 AirDrop을 응용 프로그램에 추가하는 방법에 대한 예제가 있습니까? iPhone과 iPad 응용 프로그램간에 SQLite 데이터베이스를 공유하려고합니다. 나는 많은 연구를했고 AirDrop이 갈 길인 것처럼 보이지만 어떻게되는지 알아 내는데 문제가 있습니다.AirDrop을 사용하여 파일 보내기 및 받기

저는 AirDrop을 UIActivityViewController를 사용하여 열어야한다는 것을 알고 있습니다. 문제가 아니지만 두 장치 간의 연결을 어떻게 설정합니까? 어떤 사람이 올바른 길을 걷는 데 도움이되는 간단한 예가 있습니까?

감사합니다.

답변

6

장치간에 연결을 설정할 필요는 없습니다. 이처럼 코드를 사용하여 UIActivityViewController를 제시하면 사용자가 AirDrop 옵션을 선택하면 사용자를 대신하여 처리됩니다.

NSString* text = @"Some text I want to share"; 
UIImage* image = [UIImage imageNamed:@"image.png"]; 
UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[text, image] applicationActivities:nil]; 
activityViewController.completionHandler = ^(NSString* activityType, BOOL completed) { 
    // do whatever you want to do after the activity view controller is finished 
}; 
[self presentViewController:activityViewController animated:YES completion:nil]; 
0

iOS 7에서 Apple은 근처의 다른 iOS 장치와 데이터를 공유하기 위해 AirDrop이라는 새로운 기술을 도입했습니다. AirDrop은 Bluetooth를 사용하여 주변 장치를 검색합니다. 블루투스를 통해 연결이 이루어지면 두 장치를 서로 연결하여 더 빠른 데이터 전송을 가능하게하는 ad-hoc Wi-Fi 네트워크를 만듭니다. AirDrop을 사용하기 위해 장치를 Wi-Fi 네트워크에 연결해야한다는 의미는 아닙니다. 데이터 전송을 위해 WiFi를 켜기 만하면됩니다.

iOS 7 SDK에서 사용할 수있는 UIActivityViewController 클래스를 사용하면이 기능을 쉽게 통합 할 수 있습니다. 아래 코드를 사용하여 iOS 앱에 AirDrop 공유 기능을 통합하십시오.

- (NSURL *)generateFileURL:(NSString*)filename 
{ 
     NSArray *fileComponents = [filename componentsSeparatedByString:@"."]; 
     NSString *filePath = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]]; 

     return [NSURL fileURLWithPath:filePath]; 
} 

- (IBAction) shareButtonClicked:(UIButton *)button 
{ 
     NSString * fileName = @"testImage.png";  // @"myFile.pdf" 
     NSURL *url = [self generateFileURL:fileName]; 

     UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil]; 

     // you can exclude certain types of activities. You can just display the AirDrop activity by excluding all other activities. 
     NSArray *excludedActivities = @[UIActivityTypePostToWeibo, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo]; 
     activityViewController.excludedActivityTypes = excludedActivities; 

     [self presentViewController:activityViewController animated:YES completion:^{ }]; 
} 
0

파일을 문서 디렉토리에 저장하는 경우 위의 URL을 변경해야합니다.

NSURL *url = [NSURL fileURLWithPath:[self dataFilePath]]; 

-(NSString *)dataFilePath { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
return [documentsDirectory stringByAppendingPathComponent:@"myFile.txt"]; 
} 

또한, 나는 좀 더 활동을 배제하지 않은 경우 매우 긴 지연 (1-2 분)이 있었다 발견 :

NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook, 
            UIActivityTypePostToWeibo, 
            UIActivityTypeMessage, UIActivityTypeMail, 
            UIActivityTypePrint, UIActivityTypeCopyToPasteboard, 
            UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, 
            UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, 
            UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo]; 
0

있는 UIImage * 이미지 = imageView.image가; NSArray * items = @ [image];

// build an activity view controller 
UIActivityViewController *controller = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil]; 

// and present it 
[self presentViewController:controller animated:YES completion:^{ 
    // executes after the user selects something 
}];