如何为iOS app添加AirDrop文件分享功能

供稿:hz-xin.com     日期:2025-01-17
如何为iOS app添加AirDrop文件分享功能

irDrop概览
  AirDrop是iOS 7引入的一项新功能,iCloud同步功能允许在用户的两台iOS设备之间分享照片和文档,而AirDrop可以在不同用户的iOS设备之间进行照片和文档的分享。
  
  在iOS 7之前,iOS用户主要依靠第三方app实现iOS设备间的文件和数据分享,在iOS 7中,该项新功能适用于所有iPhone 5、iPad 4、iPad mini以及第五代iPod touch设备。通过AirDrop,你可以与附近其他iOS app分享照片、视频、通讯录、URL、Passbook passes、App Store上的app列表、iTunes Store中的媒体列表以及地图中的位置信息等等。
  
  苹果在iOS 7 SDK中集成了UIActivityViewController类,可以让你很简单地就能把AirDrop功能整合进app中。UIActivityViewController类封装了文件分享功能的细节。你所需要的就是告知这个类你希望分享的内容,以及处理的结果。在这个教程中,我们将会演示UIActivityViewController的使用方法,以及你该如何使用AirDrop来分享图片/文档。

  AirDrop使用蓝牙来扫描周围的设备,当两台设备通过蓝牙建立起了连接,考虑到更快速的数据传输,它就会创建点对点的Wi-Fi网络来连接两部iOS 设备。但并不意味着为了使用AirDrop而需要把设备连接至Wi-Fi网络。
  
  比如你想在iPhone拍照类app中将照片分享给另一位iPhone设备,假如你在两台设备间启动了AirDrop,点击屏幕左下角的分享按钮就能实现不同用户iOS 设备间的文件分享。当屏幕处于关闭状态时,AirDrop为不可用,所以要确保文件接收方的设备处于打开状态,然后选择设备进行分享。在另一台设备上,你会看到照片预览和确认要求。接收者可以接受或者拒绝接收文件。如果你选择了接收,照片会被传输至你的iOS设备,并保存至相册。

  AirDrop并不仅仅适用于拍照类app,你也可以在大部分内置的应用中看到它,比如Contacts, iTunes, App Store, Safari以及其他应用程序中。
  
  下面我们来看看如何把AirDrop整合进你的app。
  
  UIActivityViewController简介快览
  可能有开发者会觉得在应用中整合AirDrop比较麻烦,其实只需要数行代码就能实现,UIActivityViewController让这个过程变得非常简单,因为AirDrop是该类固定的一部分。
  
  UIActivityViewController类是一个标准的view controller,提供了几项标准的服务,比如复制项目至剪贴板,把内容分享至社交网站,以及通过Messages发送数据等等。在iOS 7 SDK中,UIActivityViewController类提供了内置的AirDrop功能。

  AirDrop是iOS 7引入的一项新功能,iCloud同步功能允许在用户的两台iOS设备之间分享照片和文档,而AirDrop可以在不同用户的iOS设备之间进行照片和文档的分享。
  
  在iOS 7之前,iOS用户主要依靠第三方App实现iOS设备间的文件和数据分享,在iOS 7中,该项新功能适用于所有iPhone 5、iPad 4、iPad mini以及第五代iPod touch设备。通过AirDrop,你可以与附近其他iOS App分享照片、视频、通讯录、URL、Passbook passes、App Store上的app列表、iTunes Store中的媒体列表以及地图中的位置信息等等。
  
  苹果在iOS 7 SDK中集成了UIActivityViewController类,可以让你很简单地就能把AirDrop功能整合进app中。UIActivityViewController类封装了文件分享功能的细节。你所需要的就是告知这个类你希望分享的内容,以及处理的结果。在这个教程中,我们将会演示UIActivityViewController的使用方法,以及你该如何使用AirDrop来分享图片/文档。
  
  AirDrop使用蓝牙来扫描周围的设备,当两台设备通过蓝牙建立起了连接,考虑到更快速的数据传输,它就会创建点对点的Wi-Fi网络来连接两部iOS 设备。但并不意味着为了使用AirDrop而需要把设备连接至Wi-Fi网络。
  
  比如你想在iPhone拍照类app中将照片分享给另一位iPhone设备,假如你在两台设备间启动了AirDrop,点击屏幕左下角的分享按钮就能实现不同用户iOS 设备间的文件分享。当屏幕处于关闭状态时,AirDrop为不可用,所以要确保文件接收方的设备处于打开状态,然后选择设备进行分享。在另一台设备上,你会看到照片预览和确认要求。接收者可以接受或者拒绝接收文件。如果你选择了接收,照片会被传输至你的iOS设备,并保存至相册。
  
  AirDrop并不仅仅适用于拍照类App,你也可以在大部分内置的应用中看到它,比如Contacts, iTunes, App Store, Safari以及其他应用程序中。
  
  下面我们来看看如何把AirDrop整合进你的App。
  
  UIActivityViewController简介快览
  可能有开发者会觉得在应用中整合AirDrop比较麻烦,其实只需要数行代码就能实现,UIActivityViewController让这个过程变得非常简单,因为AirDrop是该类固定的一部分。
  
  UIActivityViewController类是一个标准的view controller,提供了几项标准的服务,比如复制项目至剪贴板,把内容分享至社交网站,以及通过Messages发送数据等等。在iOS 7 SDK中,UIActivityViewController类提供了内置的AirDrop功能。
  
  如果你有一些数据一批对象需要通过AirDrop进行分享,你所需要的是通过对象数组初始化UIActivityViewController,并展示在屏幕上:
  12 UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; [self presentViewController:controller animated:YES completion:nil];
  如上代码所示,只需要两行代码,你就能通过AirDrop选项启用activity view。当检测到周围的设备时,activity controller会自动展示在设备上,并处理数据转换(如果你选择了该项)。
  
  根据需要,你可以拒绝特定的分享类型,也就是说,你可以通过排除所有的活动仅展示通过AirDrop进行分享。如下代码所示:
  123456789101112 UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook, UIActivityTypePostToWeibo, UIActivityTypeMessage, UIActivityTypeMail, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo]; controller.excludedActivityTypes = excludedActivities; [self presentViewController:controller animated:YES completion:nil];
  现在activity view controller仅展示AirDrop选项:
  
  
  
  你可以通过UIActivityViewController来分享不同的数据类型,包括NSString, UIImage以及NSURL。你不仅可以使用NSURL分享链接,也可以通过URL传递任何类型的文件。
  
  在接收端,当其他设备接收数据时,它会基于数据类型自动打来App。也就是说,如果传送的是UIImage时,被接收的图片会展示在拍照类 App中。当传递的是PDF文件时,其他设备会在Safari中打开它。如果你仅仅分享NSString object,数据将会被展示在Notes App中。
  
  AirDrop Demo App介绍
  现在我们创建一个AirDrop demo app来帮你更好地理解UIActivityViewController和AirDrop。这个示例app非常简单,当首次启动,你会看到罗列了几个文件的表格视图,包括图片文件、PDF文件以及文本文件,你可以点击文件并查看内容。在content view中,会看到一个屏幕右上角有一个操作按钮。点击按钮将启用AirDrop选项,并且你可以与周围设备分享图片或者文档。
  
  你可以从头开始做这个App,但是为了节省时间,你可以下载这个项目模板来试验。打开Xcode project,你会发现下边这个Storyboard:
  
  
  这个示例app已经执行了ListTableViewController和DocumentViewController。如果编译并运行这个App,你会发现一个文件列表。点击任何一个文件,图片或者文档内容将会展示出来。但是分享按钮并没有被执行,这也是我们将要讨论的一点。
  
  添加AirDrop功能
  在工程模板中,ListTableViewController被用来在表格视图中展示文件列表,而 DocumentViewController则通过web view来展示文档内容。document view中的操作按钮和DocumentViewController的share: method有关。该方法的实现如下所示:
  1234567891011121314151617181920 - (IBAction)share:(id)sender { NSURL *url = [self fileToURL:self.documentName]; NSArray *objectsToShare = @[url]; UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; // Exclude all activities except AirDrop. NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook, UIActivityTypePostToWeibo, UIActivityTypeMessage, UIActivityTypeMail, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo]; controller.excludedActivityTypes = excludedActivities; // Present the controller [self presentViewController:controller animated:YES completion:nil]; }
  这个代码非常熟悉,我们在最开始的时候已经讨论过了,它可以用来简单地创建UIActivityViewController,排除所有分享功能(AirDrop除外),并作为模态视图展示出控制器。棘手的部分是如何定义分享的对象。下边我们将会把分享文件转换成NSURL object,并把文件URL作为数组传递给AirDrop。
  
  头两行代码是关于file URL转换的。documentName属性存储了当前文件(比如ios-game-kit-sample.pdf),展示在document view中。我们通过文档名称和它返回的相应的file URL,来简单地调用fileToURL: method。fileToURL: method已经在工程模板中,代码如下:
  1234567 - (NSURL *) fileToURL:(NSString*)filename { NSArray *fileComponents = [filename componentsSeparatedByString:@"."]; NSString *filePath = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]]; return [NSURL fileURLWithPath:filePath]; }
  这些代码非常简洁明了,比如ios-game-kit-sample.pdf将会被转换为file:///Users/simon/Library/Application
  
  %20Support/iPhone%20Simulator/7.0.3/Applications/A5321493-318A-4A3B-8B37-E56B8B4405FC/AirDropDemo.app/ios-
  
  game-kit-sample.pdf.
  
  file URL依据你运行的设备而变化,但是URL应该以“file://”协议开头。通过file URL object,我们创建了相应的数组,并把它传递给UIActivityViewController以用来进行AirDrop分享。
  
  
  编译并运行AirDrop demo
  做完这些后,编译并在iPhone上运行这个App。

irDrop概览
  AirDrop是iOS 7引入的一项新功能,iCloud同步功能允许在用户的两台iOS设备之间分享照片和文档,而AirDrop可以在不同用户的iOS设备之间进行照片和文档的分享。
  
  在iOS 7之前,iOS用户主要依靠第三方app实现iOS设备间的文件和数据分享,在iOS 7中,该项新功能适用于所有iPhone 5、iPad 4、iPad mini以及第五代iPod touch设备。通过AirDrop,你可以与附近其他iOS app分享照片、视频、通讯录、URL、Passbook passes、App Store上的app列表、iTunes Store中的媒体列表以及地图中的位置信息等等。
  
  苹果在iOS 7 SDK中集成了UIActivityViewController类,可以让你很简单地就能把AirDrop功能整合进app中。UIActivityViewController类封装了文件分享功能的细节。你所需要的就是告知这个类你希望分享的内容,以及处理的结果。在这个教程中,我们将会演示UIActivityViewController的使用方法,以及你该如何使用AirDrop来分享图片/文档。

  AirDrop使用蓝牙来扫描周围的设备,当两台设备通过蓝牙建立起了连接,考虑到更快速的数据传输,它就会创建点对点的Wi-Fi网络来连接两部iOS 设备。但并不意味着为了使用AirDrop而需要把设备连接至Wi-Fi网络。
  
  比如你想在iPhone拍照类app中将照片分享给另一位iPhone设备,假如你在两台设备间启动了AirDrop,点击屏幕左下角的分享按钮就能实现不同用户iOS 设备间的文件分享。当屏幕处于关闭状态时,AirDrop为不可用,所以要确保文件接收方的设备处于打开状态,然后选择设备进行分享。在另一台设备上,你会看到照片预览和确认要求。接收者可以接受或者拒绝接收文件。如果你选择了接收,照片会被传输至你的iOS设备,并保存至相册。

  AirDrop并不仅仅适用于拍照类app,你也可以在大部分内置的应用中看到它,比如Contacts, iTunes, App Store, Safari以及其他应用程序中。
  
  下面我们来看看如何把AirDrop整合进你的app。
  
  UIActivityViewController简介快览
  可能有开发者会觉得在应用中整合AirDrop比较麻烦,其实只需要数行代码就能实现,UIActivityViewController让这个过程变得非常简单,因为AirDrop是该类固定的一部分。
  
  UIActivityViewController类是一个标准的view controller,提供了几项标准的服务,比如复制项目至剪贴板,把内容分享至社交网站,以及通过Messages发送数据等等。在iOS 7 SDK中,UIActivityViewController类提供了内置的AirDrop功能。

airdrop是什么意思 airdrop怎么打开关闭及使用
AirDrop是iOS7新增的主要功能,iOS设备之间可以通过AirDrop进行快捷的文件传输。值得注意的是,并不是所有的iOS设备都可以使用这项功能,目前AirDrop只在iPhone5、iPad4、iPadmini、iPodTouch5上提供,需要使用iCloud账户。也就是说,iPhone4s及同期产品均不支持AirDrop。开启AirDrop功能:只需从手机底部向...

airdroo是什么意思?
通过Airdrop,项目方可以吸引更多的用户来了解自己,参与自己的社区建设,增加项目的知名度和影响力。Airdrop的形式多种多样,例如一些项目会直接将代币空投到特定的钱包地址,或者需要用户完成一些简单的任务才能获得对应的代币。AirDrop在苹果公司的iOS系统中也有特殊的含义,它是指通过蓝牙技术在附近的设备之...

苹果手机Airdrop关掉了怎么打开?
1、现在AirDrop在iOS系统中文成为【隔空投递】,隐藏在控制中心的二级菜单当中;您可以在滑开控制中心后,长按无线连接区域,点击左下角的【隔空投递】;2、在弹出的菜单中即可选择开启或者选项的调整;3、如果想要分享,只需在页面点击分享按钮,即可在上方出现附近开启【隔空投递】的列表,选择之后即可...

airdroo是什么意思?
Airdrop在广义上是指将数字资产空投至用户地址的行为,是项目方用于宣传和推广的主流手段。这可以吸引用户了解项目并参与社区建设,提高项目的知名度和影响力。Airdrop的形式多样,项目方可能直接将代币空投至特定钱包地址,或要求用户完成简单任务以获得代币。在苹果公司的iOS系统中,AirDrop代表通过蓝牙技术...

苹果手机Airdrop关掉了怎么打开
1、首先我们要从手机下方往上划,会出现一个窗口。2、里面会出现AirDrop的字母。点击它,会继续弹出一个窗口。上面有停用,仅限联系人,所有人还有取消的字样。3、点击仅限联系人,确定后下方字母处就会出现AirDrop共享:仅限联系人。之后你就可以将图片传给他们,照片处选择,会弹出窗口,选择确定就...

苹果AirDrop怎么用,AirDrop怎么找不到
开启AirDrop功能:只需从手机底部向上用手机滑动,即可上拉出菜单。在控制中心找到AirDrop,点击AirDrop把它打开。你可以选择“仅限联系人”或者“所有人”。选择仅限联系人后,那么只有通讯录中的朋友能够和你共享照片、视频、通讯录,等等。只要选择你的共享对象。接着,AirDrop会使用无线网络和蓝牙搞...

苹果AirDrop怎么用,AirDrop怎么找不到
开启AirDrop功能:只需从手机底部向上用手机滑动,即可上拉出菜单。在控制中心找到AirDrop,点击AirDrop把它打开。你可以选择“仅限联系人”或者“所有人”。选择仅限联系人后,那么只有通讯录中的朋友能够和你共享照片、视频、通讯录,等等。只要选择你的共享对象。接着,AirDrop会使用无线网络和蓝牙搞...

苹果手机怎么投送文件
或许在iOS7正式版发布之后,会有越来越多的app、文件支援AirDrrop传输。传输原理 在官方的说明文件里,我们可以发现AirDrop是通过蓝牙与wifi来进行传输。其中,蓝牙“握手”,wifi“传输”。整个传输过程,并不需要网络连接的参与。也就是说,即便你的iOS设备处于网络离线状态,依旧能通过AirDrop进行文件...