iOS 通过UIActivityViewController实现更多分享服务
初始化
接着我们在Button的触发方法里面开始操作UIActivityViewController
来提供服务。首先,我们需要初始化一个UIActivityViewController
的实例,UIActivityViewController
提供了一个初始化方法:
- (instancetype)initWithActivityItems:(NSArray *)activityItems applicationActivities:(nullable NSArray<__kindof UIActivity *> *)applicationActivities NS_DESIGNATED_INITIALIZER;
excludedActivityTypes
UIActivityViewController
相比于UIDocumentInteractionController
优势除了可以添加额外的自定义服务,它还提供了非常好的原生服务的定制化功能。我们可以完全根据自己的需求,控制UIActivityViewController
提供的系统服务的显示,比如我不想展示AirDrop
这个功能,而这点在UIDocumentInteractionController
是做不到的。想做到这一点,就需要使用到UIActivityViewController
提供的一个属性:
@property(nullable, nonatomic, copy) NSArray<NSString *> *excludedActivityTypes;
正如注释中提到的,excludedActivityTypes
这个属性包含了所有不想在UIActivityViewController
中展示的Item服务。excludedActivityTypes
是一个字符串数组,所包含的内容必须是系统提供的UIActivity
的activityType
字符串,而系统提供的字符串如下:
NSString *const UIActivityTypePostToFacebook;
NSString *const UIActivityTypePostToTwitter;
NSString *const UIActivityTypePostToWeibo;
NSString *const UIActivityTypeMessage;
NSString *const UIActivityTypeMail;