iOS UIActivityViewController实现原生分享AirDrop

勇~敢~的小伙伴们,你们好啊~

我今天做项目的时候我们项目中需要加一个下载功能,下载rar?zip?mp3?mp4?还是txt?我没有一个很好的方式把所有的文件格式打开,借用万能的UIActivityViewController使用手机上其他APP打开岂不是个最好的办法?

既然到这里,我就落实到实处,开始动手做。

效果如图:

iOS UIActivityViewController实现原生分享AirDrop_第1张图片

UIActivityViewController

实现起来很简单,只要几行代码就可以解决问题。

        UIActivityViewController *activity = [[UIActivityViewController alloc] initWithActivityItems:@[videoURL] applicationActivities:nil];
        UIPopoverPresentationController *popover = activity.popoverPresentationController;
        if (popover) {
            popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
        }
        [self presentViewController:activity animated:YES completion:NULL];
其中videoURL是NSURL类,当传输的是文件时用URL分享,文字用NSString,图片用UIImage,放在activityItems中。

applicationActivities数组内的对象必须是UIActivity类型的对象,代表的是iOS系统支持的我们自定义的服务。

UIActivityViewController只支持模态。present


excludedActivityTypes

另外还有一个不得不提到的就是excludedActivityTypes的属性。

excludedActivityTypes这个属性包含了所有不想在UIActivityViewController中展示的Item服务。excludedActivityTyped是一个字符串数组,所包含的内容必须是系统提供的UIActivityActivityType字符串,而系统提供的字符串如下:

NSString *const UIActivityTypePostToFacebook;
NSString *const UIActivityTypePostToTwitter;
NSString *const UIActivityTypePostToWeibo;
NSString *const UIActivityTypeMessage;
NSString *const UIActivityTypeMail;
NSString *const UIActivityTypePrint;
NSString *const UIActivityTypeCopyToPasteboard;
NSString *const UIActivityTypeAssignToContact;
NSString *const UIActivityTypeSaveToCameraRoll;
NSString *const UIActivityTypeAddToReadingList;
NSString *const UIActivityTypePostToFlickr;
NSString *const UIActivityTypePostToVimeo;
NSString *const UIActivityTypePostToTencentWeibo;
NSString *const UIActivityTypeAirDrop;

如果我们不想展示AirDrop功能只需要设置

activity.excludedActivityTypes = @[UIActivityTypeAirDrop];

到此UIActivityViewController的简单使用就结束了,欢迎小伙伴儿们指出我的问题~


你可能感兴趣的:(iOS)