美文网首页
学习笔记-使用Airdrop进行文件分享

学习笔记-使用Airdrop进行文件分享

作者: Mystical | 来源:发表于2016-12-26 11:13 被阅读729次

    Airdrop分享功能实现

    UIActivityViewController类提供了内置的AirDrop功能,在应用中整合Airdrop只需要几行代码即可完成该功能。

    UIActivityViewController *activityViewController =
        [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];// items 将在后文给出解释
    [self presentViewController:activityViewController animated:YES completion:nil];
    

    以上代码,你就能通过AirDrop选项启用activity view。
    你也可以根据需要,拒绝特定的分享类型,也就是说,可以通过排除所有的活动仅展示通过AirDrop进行分享。添加如下代码:

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

    我们需要将要分享的文件转换为URL object,创建了相应的数组,并把它传递给UIActivityViewController以用来进行AirDrop分享(上文代码中的items)。
    可以通过以下代码,将文件转换为URL object:

    NSURL *url = [NSURL fileURLWithPath:filePath];
    NSArray *items = [NSArray arrayWithObjects:url, nil];
    

    接收Airdrop传输的文件

    在系统中,苹果用UTIs来处理数据类型的标示,也就是,一个uti是用来标示特定类型的数据或文件。UTls清单
    要使App能打开相应类型的文件,需要进行以下几步操作:

    • plist文件配置(以zip类型文件为例)
    1.png

    Handler rank 为app对文件的处理等级

    配置好以上信息之后,可以在TARGET/info中查看配置情况

    3.png
    • 文件接收处理
      在iOS9.0之后,回调方法有变动
    #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
    {
        return YES;
    }
    
    #else
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options
    {
        return YES;
    }
    

    附-可能会使用到的一些方法

    • 文件压缩
      文件压缩推荐使用第三方库:ZipArchive
    // 创建文件压缩后的路径
    NSString *zipPath = [docDataPath stringByAppendingFormat:@"/share.zip"];// docDataPath为Documents目录
    ZipArchive *zip = [[ZipArchive alloc]init];
    [zip CreateZipFile2:zipPath];
    // 添加文件
    [zip addFileToZip:path1 newname:path2];
    // path1 要压缩文件的全路径
    // path2 要压缩文件的文件名
    [zip CloseZipFile2];
    
    • 列出文件夹下所有文件
    NSString *path = self.filePath; // 要列出来的目录
    NSFileManager *myFileManager=[NSFileManager defaultManager];
    NSDirectoryEnumerator *myDirectoryEnumerator;
    myDirectoryEnumerator=[myFileManager enumeratorAtPath:path];
    //列举目录内容,可以遍历子目录
    while((path = [myDirectoryEnumerator nextObject])!= nil)
    {
        NSLog(@"%@",path);
    }
    

    相关文章

      网友评论

          本文标题:学习笔记-使用Airdrop进行文件分享

          本文链接:https://www.haomeiwen.com/subject/qrhjvttx.html