2013-10-04 5 views
5

誰かが、ドキュメントフォルダからファイルを送受信するために、アプリケーションにAirDropを追加する方法の例はありますか?私はiPhoneとiPadのアプリケーションの間でSQLiteデータベースを共有しようとしています。私は多くの研究を行いましたが、AirDropが道のりだと思われますが、どうやって解決するのかに問題があります。AirDropを使用してファイルを送受信する

私はUIActivityViewControllerを使用してAirDropを開く必要があることを知っていますが、これは問題ではありませんが、どのように2つのデバイス間の接続を確立しますか?どんな人が正しい軌道に乗るのを助ける簡単な例がありますか?

ありがとうございました!

答えて

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を介して接続が確立されると、Ad-Hoc Wi-Fiネットワークが作成され、2つのデバイスがリンクされ、より高速なデータ転送が可能になります。 AirDropを使用するためにデバイスをWi-Fiネットワークに接続する必要はありません。あなたのWiFiは、単にデータ転送のためにオンにする必要があります。

iOS 7 SDKで使用できるUIActivityViewControllerクラスを使用すると、この機能を簡単に統合できます。以下のコードを使用して、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 *画像= 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 
}]; 
関連する問題