首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AirDrop发送和接收文件

使用AirDrop发送和接收文件
EN

Stack Overflow用户
提问于 2013-10-05 00:47:10
回答 4查看 7.9K关注 0票数 6

谁有任何例子,如何将AirDrop添加到应用程序中,以便从documents文件夹发送和接收文件?我正在尝试在iPhone和iPad应用程序之间共享SQLite数据库。我已经做了很多研究,看起来AirDrop是可行的,但我在弄清楚怎么做的时候遇到了问题。

我知道我需要使用UIActivityViewController打开AirDrop,这不是问题,但是我如何在这两个设备之间建立连接?谁有一个简单的例子,可以帮助我走上正确的道路?

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2013-10-05 08:12:02

您不需要在设备之间建立连接。您只需使用如下所示的代码呈现UIActivityViewController,当用户选择AirDrop选项时,它将为您处理。

代码语言:javascript
复制
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]; 
票数 7
EN

Stack Overflow用户

发布于 2015-12-19 14:52:46

在iOS 7中,苹果引入了名为AirDrop的新技术,以便与附近的其他iOS设备共享数据。AirDrop使用蓝牙扫描附近的设备。当通过蓝牙建立连接时,它将创建一个ad-hoc Wi-Fi网络,将两个设备连接在一起,从而实现更快的数据传输。这并不意味着你需要将设备连接到Wi-Fi网络才能使用AirDrop。您的WiFi只需打开即可进行数据传输。

iOS 7SDK中提供的UIActivityViewController类使得集成此功能变得很容易。使用以下代码在您的iOS应用程序中集成AirDrop共享功能。

代码语言:javascript
复制
- (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:^{ }];
}
票数 1
EN

Stack Overflow用户

发布于 2016-05-18 22:04:25

如果将文件保存到documents目录,则需要从上面更改URL。

代码语言:javascript
复制
 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分钟):

代码语言:javascript
复制
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                    UIActivityTypePostToWeibo,
                                    UIActivityTypeMessage, UIActivityTypeMail,
                                    UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                    UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                    UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                    UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19186635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档