分享本地文件
//獲取Document路徑
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//txt文件生成路徑
NSString *docPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"WChatlog.txt"];
//生成txt文件
[log writeToFile:docPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
//獲取路徑文件url
NSURL*logUrl = [NSURL fileURLWithPath:docPath];
其他,分享文本圖片等
NSString*shareText = @"shareText";
UIImage*shareTextImage = [UIImage imageNamed:@"avatar_user"];
創建分享視圖控制器
ActivityItems在執行activity中用到的數據對象數組。數組中的對象類型是可變的,并依賴于應用程序管理的數據。例如,數據可能是由一個或者多個字符串/圖像對象,代表了當前選中的內容。
Activities是一個UIActivity對象的數組,代表了應用程序支持的自定義服務。這個參數可以是nil。
NSArray*activityItems = @[shareText,shareTextImage,logUrl];
//可以自定義
UIActivity *activity = [[UIActivity alloc]init];
NSArray *activities =@[activity];
UIActivityViewController*activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:activities];
有兩個block回調根據系統選擇使用
//UIActivityViewControllerCompletionWithItemsHandler)(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError)iOS >=8.0
//UIActivityViewControllerCompletionHandler (NSString * __nullable activityType, BOOL completed); iOS 6.0~8.0
分享結束的回調block
__weak typeof(activity) weakActivity = activity;
if([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0){
//初始化回調方法
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(NSString *activityType,BOOL completed,NSArray *returnedItems,NSError *activityError) {
DebugLog(@"activityType :%@", activityType);
//分享結束需要調用
[weakActivity activityDidFinish:YES];
if(completed) { DebugLog(@"completed"); }else{
DebugLog(@"cancel");}
};
activityVC.completionWithItemsHandler = myBlock;
}else{
UIActivityViewControllerCompletionHandlermyBlock = ^(NSString*activityType,BOOLcompleted) {
//分享結束需要調用
[weakActivity activityDidFinish:YES];
DebugLog(@"activityType :%@", activityType);
if(completed) {DebugLog(@"completed");}else{
DebugLog(@"cancel");}
};
activityVC.completionHandler= myBlock;
}
要屏蔽掉的分享渠道
UIActivityTypeOpenInIBooks是iOS9以后的類型 慎用
activityVC.excludedActivityTypes=@[UIActivityTypePostToFacebook,UIActivityTypePostToTwitter,UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypePrint,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo,UIActivityTypeOpenInIBooks];
顯示系統分享controller
if(activityVC) {
[self.window.rootViewControllerpresentViewController:activityVCanimated:YEScompletion:nil];
}