iOS系統分享頁面UIActivityViewController的簡單使用筆記

分享本地文件

//獲取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];

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容