1. 程式人生 > >iOS 兩種系統分享(配Demo下載)UIActivityViewController 和 SLComposeViewController

iOS 兩種系統分享(配Demo下載)UIActivityViewController 和 SLComposeViewController

使用 UIActivityViewController 分享

分享內容

分享內容一般是在初始化UIActivityViewController時傳入,內容是一個數組,沒有特定型別。可以分享文字、圖片、URL等。

UIImage *shareImg = [UIImage imageNamed:@"9.jpg"];
UIImage *shareImg1 = [UIImage imageNamed:@"14.jpg"];
NSString *shareTitle = @"分享1";
NSURL *shareURL = [NSURL URLWithString:@"http://www.baidu.com"
]; NSArray *activityItems = @[shareImg,shareURL,shareTitle]; UIActivityViewController *activeViewController = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

細節注意

1、 有圖片時,url 和 title無效不顯示 .
NSArray *activityItems = @[shareImg,shareURL,shareTitle];

2、可以新增多張圖片,預設顯示第一張,可以滑動檢視圖片,如:
NSArray *activityItems = @[shareImg,shareImg1,shareURL,shareTitle];

3、有url 和 title 時,優先顯示url,不顯示title,如:

NSArray *activityItems = @[shareTitle,shareURL];

4、只有文字時,才顯示文字,如:
NSArray *activityItems = @[shareTitle];

分享到哪兒

蘋果提供了很多分享平臺UIActivityType,如新浪微博、微信、Twitter等等。excludedActivityTypes 代表你不希望顯示的分享平臺。

注意事項
1. 從iOS6 - iOS8 各版本分別新增了不同的平臺;
2. 如果本機沒有某個平臺,則不會顯示可分享。

 //不顯示哪些分享平臺
    activeViewController.excludedActivityTypes = UIActivityTypeAddToReadingList;

SL 分享

匯入框架

匯入Social.framework

分享到哪兒(可自定義)

1、系統只提供了下面幾種方式

 SLServiceTypeTwitter NS_AVAILABLE(10_8, 6_0);
 SLServiceTypeFacebook NS_AVAILABLE(10_8, 6_0);
 SLServiceTypeSinaWeibo NS_AVAILABLE(10_8, 6_0);
 SLServiceTypeTencentWeibo NS_AVAILABLE(10_9, 7_0);
 SLServiceTypeLinkedIn NS_AVAILABLE(10_9, NA);

2、實際可以根據id來分享到更多平臺,如微信。

NSString *const [email protected]"com.tencent.xin.sharetimeline";
NSString *socialType = SystemSocialType_WeiXin;
if (![SLComposeViewController isAvailableForServiceType:socialType]) {
        NSLog(@"不可用");
        return;
    }

// 建立控制器,並設定ServiceType
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];

3、至於如何獲取這些ID,我還沒有找到特定的方法。這裡貼上網上介紹的常用的id

   "<NSExtension: 0x170167b00> {id = com.apple.share.SinaWeibo.post}",
    "<NSExtension: 0x170166240> {id = com.apple.share.TencentWeibo.post}",
    "<NSExtension: 0x1701663c0> {id = com.taobao.taobao4iphone.ShareExtension}",
    "<NSExtension: 0x170166540> {id = com.tencent.qqmail.shareextension}",
    "<NSExtension: 0x1701666c0> {id = com.apple.mobilenotes.SharingExtension}",
    "<NSExtension: 0x170166b40> {id = com.apple.share.Vimeo.post}",
    "<NSExtension: 0x1701669c0> {id = com.apple.mobileslideshow.StreamShareService}",
    "<NSExtension: 0x170166840> {id = com.tencent.mqq.ShareExtension}",
    "<NSExtension: 0x170166cc0> {id = com.tencent.xin.sharetimeline}",
    "<NSExtension: 0x170166e40> {id = com.apple.share.Twitter.post}",
    "<NSExtension: 0x170166fc0> {id = com.apple.share.Flickr.post}",
    "<NSExtension: 0x170167140> {id = com.alipay.iphoneclient.ExtensionSchemeShare}",
    "<NSExtension: 0x170167380> {id = com.apple.Music.MediaSocialShareService}",
    "<NSExtension: 0x170167500> {id = com.apple.share.Facebook.post}",
    "<NSExtension: 0x170167680> {id = com.apple.reminders.RemindersEditorExtension}",
    "<NSExtension: 0x170167800> {id = com.up.2.ShareExtension}",
    "<NSExtension: 0x170167980> {id = com.jianshu.Hugo.Share-Extension}",
    "<NSExtension: 0x1701660c0> {id = com.apple.Health.HealthShareExtension}"

4、 判斷服務是否可用

[SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo];

彈出分享內容輸入介面

  SLComposeViewController *composeVC = \[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
  [self presentViewController:composeVC animated:YES completion:nil]; 

分享內容設定

只能分享文字、圖片、url

  // 新增要分享的圖片
    [composeVC addImage:[UIImage imageNamed:@"9.jpg"]];
    // 新增要分享的文字
    [composeVC setInitialText:@"SL分享"];
    // 新增要分享的url
    [composeVC addURL:[NSURL URLWithString:@"http://www.baidu.com"]];