2013-10-04 21 views
5

Belge klasöründen dosya göndermek ve almak için bir uygulamaya AirDrop ekleme hakkında herhangi bir örneği olan var mı? Bir iPhone ve iPad uygulaması arasında bir SQLite veritabanı paylaşmaya çalışıyorum. Çok fazla araştırma yaptım ve AirDrop'un gitmesi gereken bir yol gibi görünüyor, ama nasıl olduğunu anlamakta zorlanıyorum.AirDrop Kullanarak Bir Dosya Gönderme ve Alma

UIActivityViewController kullanarak AirDrop'u açmam gerektiğini biliyorum ve bu sorun değil, iki aygıt arasındaki bağlantıyı nasıl kurabilirim? Doğru yola girmeme yardımcı olacak basit bir örnek var mı?

Teşekkür ederiz!

cevap

6

Aygıtlar arasında bağlantı kurmanıza gerek yoktur. UIActivityViewController'ı böyle bir kod kullanarak sunmanız yeterlidir ve kullanıcı AirDrop seçeneğini seçtiğinde sizin için halledilir.

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 yakındaki diğer iOS cihazlar ile veri paylaşımı havadan yardım adlandırılan yeni teknoloji tanıtmak vardır. AirDrop, yakındaki cihazları taramak için Bluetooth'u kullanır. Bluetooth ile bir bağlantı kurulduğunda, iki cihazı birbirine bağlamak için daha hızlı veri iletimi sağlayan geçici bir Wi-Fi ağı oluşturur. AirDrop'u kullanmak için cihazları bir Wi-Fi ağına bağlamanız gerektiği anlamına gelmez. Veri transferiniz için WiFi'nizin açık olması gerekiyor.

iOS 7 SDK'da bulunan UIActivityViewController sınıfı, bu özelliği tümleştirmeyi kolaylaştırır. IOS uygulamanızda AirDrop paylaşım özelliğini entegre etmek için aşağıdaki kodu kullanın. Eğer belgeler dizine kaydetmek Eğer

- (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

, yukarıdan URL'sini değiştirmek gerekecektir.

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

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

Ayrıca, ben daha etkinliklerini hariç olmasaydı çok uzun bir gecikme (1-2 dakika) vardı bulundu:

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 
}]; 
İlgili konular