2013-10-04 14 views
5

Qualcuno ha qualche esempio su come aggiungere AirDrop a un'app per inviare e ricevere un file dalla cartella dei documenti? Sto cercando di condividere un database SQLite tra un'app per iPhone e iPad. Ho fatto molte ricerche e sembra che AirDrop sia la strada da percorrere, ma ho problemi a capire come.Invia e ricevi un file usando AirDrop

So che ho bisogno di aprire AirDrop utilizzando UIActivityViewController e questo non è un problema, ma come faccio a stabilire la connessione tra i due dispositivi? Qualcuno ha un semplice esempio che mi aiuterebbe ad andare sulla strada giusta?

Grazie!

risposta

6

Non è necessario stabilire una connessione tra i dispositivi. Basta presentare UIActivityViewController usando un codice simile a questo, e quando l'utente sceglie l'opzione AirDrop, si prende cura di te.

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

In iOS 7, Apple ha introdotto la nuova tecnologia chiamata AirDrop di condividere i dati con dispositivi adiacenti altri iOS. AirDrop utilizza il Bluetooth per cercare dispositivi vicini. Quando viene stabilita una connessione tramite Bluetooth, verrà creata una rete Wi-Fi ad-hoc per collegare insieme i due dispositivi, consentendo una trasmissione dei dati più rapida. Ciò non significa che devi collegare i dispositivi a una rete Wi-Fi per poter utilizzare AirDrop. Il tuo WiFi deve semplicemente essere acceso per il trasferimento dei dati.

La classe UIActivityViewController disponibile in iOS 7 SDK semplifica l'integrazione di questa funzionalità. Usa il codice seguente per integrare la funzione di condivisione AirDrop nella tua app 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

Se si salva il file nella directory dei documenti, sarà necessario modificare l'URL dall'alto.

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

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

Inoltre, ho trovato c'era un ritardo molto lungo (1-2 minuti) se non escludo altre attività:

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

UIImage * image = imageView.image; NSArray * articoli = @ [immagine];

// 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 
}];