? ? ? ?利用UIActivityViewController實(shí)現(xiàn)系統(tǒng)原生分享文本、圖片匙隔、鏈接疑苫,不需要三方SDK,支持自定義分享牡直,可以分享到微博缀匕、微信纳决、QQ碰逸、信息、郵件阔加、備忘錄饵史、通訊錄等等。
1.創(chuàng)建要分享的數(shù)據(jù)內(nèi)容胜榔,加在一個數(shù)組 activityItems里胳喷。
NSString *textToShare = @"要分享的文字";
? ? //分享使用默認(rèn)本地圖片
? ? //UIImage *imageToShare = [UIImage imageNamed:@"shareImage"];
? ? //分享使用網(wǎng)絡(luò)圖片 ? 網(wǎng)絡(luò)圖片一定要小否則可能加載不出來
? ? UIImage *imageToShare = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"網(wǎng)絡(luò)圖片地址"]]];
? ? //分享鏈接
? ? NSURL *urlToShare = [NSURL URLWithString:@"要分享的鏈接"];
//要確定textToShare, imageToShare, urlToShare均不為空,否則不會彈出系統(tǒng)分享界面
? ? NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
2. 創(chuàng)建分享視圖控制器夭织,初始化UIActivityViewController
/* ActivityItems? 在執(zhí)行activity中用到的數(shù)據(jù)對象數(shù)組吭露。數(shù)組中的對象類型是可變的,并依賴于應(yīng)用程序管理的數(shù)據(jù)尊惰。例如讲竿,數(shù)據(jù)可能是由一個或者多個字符串/圖像對象,代表了當(dāng)前選中的內(nèi)容弄屡。Activities? 是一個UIActivity對象的數(shù)組题禀,代表了應(yīng)用程序支持的自定義服務(wù)。這個參數(shù)可以是nil膀捷。*/
? ? UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
3.當(dāng)彈出視圖框的時候迈嘹,我們發(fā)現(xiàn)上邊很多圖標(biāo)是我們用不到,我們可以將用不到的圖標(biāo)去掉全庸,用到的函數(shù)是
activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook,UIActivityTypePostToTwitter, UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo,UIActivityTypeAirDrop,UIActivityTypeOpenInIBooks];
4.初始化點(diǎn)擊回調(diào)方法
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(NSString *activityType,BOOL completed,NSArray *returnedItems,NSError *activityError){
? ? ? ? ? ? NSLog(@"activityType :%@", activityType);
? ? ? ? ? ? if (completed){
? ? ? ? ? ? ? ? NSLog(@"completed");}
? ? ? ? ? ? else{
? ? ? ? ? ? ? ? NSLog(@"cancel");}
? ? ? ? };
? ? ? ? // 初始化completionHandler秀仲,當(dāng)post結(jié)束之后(無論是done還是cancell)該blog都會被調(diào)用
? ? ? ? activityVC.completionWithItemsHandler = myBlock;
5.在展現(xiàn)view controller時,必須根據(jù)當(dāng)前的設(shè)備類型壶笼,使用適當(dāng)?shù)姆椒ㄉ窠T趇Pad上,必須通過popover來展現(xiàn)view controller拌消。在iPhone和iPodtouch上挑豌,必須以模態(tài)的方式展現(xiàn)安券。
?? ?UIViewController * rootVc = [UIApplication sharedApplication].keyWindow.rootViewController;
? ? [rootVc presentViewController:activityVC animated:TRUE completion:nil];
6.注意:分享功能(Facebook, Twitter, 新浪微博, 騰訊微博...)需要你在手機(jī)上設(shè)置中心綁定了登錄賬戶, 才能正常顯示。