2013-10-04 4 views
5

У кого-нибудь есть примеры того, как добавить AirDrop в приложение для отправки и получения файла из папки документов? Я пытаюсь разделить базу данных SQLite между iPhone и iPad. Я провел много исследований, и похоже, что 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 представила новую технологию AirDrop для совместного использования данных с соседними другими устройствами iOS. AirDrop использует Bluetooth для сканирования ближайших устройств. Когда соединение будет установлено через Bluetooth, оно создаст специальную сеть Wi-Fi для соединения двух устройств вместе, что позволит ускорить передачу данных. Это не значит, что вам необходимо подключить устройства к сети Wi-Fi, чтобы использовать AirDrop. Ваш WiFi просто должен быть включен для передачи данных.

Класс UIActivityViewController, доступный в iOS 7 SDK, позволяет легко интегрировать эту функцию. Используйте нижеприведенный код для интеграции функции совместного использования AirDrop в приложении iOS.

- (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 * IMAGE = 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 
}]; 
Смежные вопросы