iOS原生分享

前段时间看到一个帖子,分享时无法显示微信和QQ,最后发现是个笑话.哪位小伙子就没有安装微信和QQ.  iOS原生分享只显示已安装的应用.原生分享有两种 一种是使用UIActivityViewController, 另外一种是使用Social框架中的SLComposeViewController

1.使用 UIActivityViewController

 优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包

 缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image

//分享的标题 NSString *textToShare = @"分享的标题。";//分享的图片 UIImage *imageToShare = [UIImage imageNamed:@"312.jpg"];

//分享的url NSURL *urlToShare = [NSURL URLWithString:@"http://www.baidu.com"];

//在这里呢 如果想分享图片 就把图片添加进去  文字什么的通上 NSArray *activityItems = @[textToShare,imageToShare, urlToShare];

UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

  //不出现在活动项目activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];

[self presentViewController:activityVC animated:YES completion:nil];

// 分享之后的回调    activityVC.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {

        if (completed) {

            NSLog(@"completed");

            //分享 成功        } else  {

            NSLog(@"cancled");

            //分享 取消        }

    };

2.使用 UIActivityViewController

优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包。UI可以自己绘制,满足了很多个性化的需求。

 缺点:分享界面的UI需要开发者自己绘制,增加了工作量。分享的类型受限,只能分享text、url、image。

// 分享按钮的实现方法

- (void)shareBtClick

{

    // Share Extension 分享入口,需要分享到哪个平台就用哪个平台的id

    NSString *socialType = @"com.tencent.mqq.ShareExtension";

    /* 1、 系统只提供了下面几种分享平台:

    SLServiceTypeTwitter;

    SLServiceTypeFacebook;

    SLServiceTypeSinaWeibo;

    SLServiceTypeTencentWeibo;

    SLServiceTypeLinkedIn;

    2、iOS8之后系统推出的Share Extension,可以通过App的Share Extension提供了分享入口进行分享如微信的:com.tencent.xin.sharetimeline

    实际可以根据id来分享到更多平台,如微信:

    NSString *socialType = @"com.tencent.xin.sharetimeline";

    SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];

    //

    3、 下面是小编整理的部分平台id 2017-9-15

      com.taobao.taobao4iphone.ShareExtension  //  淘宝

      com.apple.share.Flickr.post}",  //  Flickr

      com.apple.share.SinaWeibo.post  //  新浪微博

    com.laiwang.DingTalk.ShareExtension  //  钉钉

    com.apple.mobileslideshow.StreamShareService  //  iCloud

    com.alipay.iphoneclient.ExtensionSchemeShare  //  支付宝

    com.apple.share.Facebook.post  //  Facebook

    com.apple.share.Twitter.post  //  Twitter

    com.apple.Health.HealthShareExtension}",    // 应该是健康管理

    com.tencent.xin.sharetimeline  //  微信(好友、朋友圈、收藏)

    com.apple.share.TencentWeibo.post  //  腾讯微博

    com.tencent.mqq.ShareExtension  //  QQ

    */


    // 创建 分享的控制器

    SLComposeViewController *composeVC  = [SLComposeViewController composeViewControllerForServiceType:socialType];

    if (!composeVC) {

        [self showAlertViewWithMsg:@"您尚未安装软件"];

        return;

    }

    if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {

        [self showAlertViewWithMsg:@"软件未配置登录信息"];

        return;

    }

    //添加分享的文字、图片、链接

    [composeVC setInitialText:@"哈罗大家好,这是分享测试的内容哦,如已看请忽略!如有任何疑问可联系1008611查你话费吧!"];

    [composeVC addImage:[UIImage imageNamed:@"动态(1)@2x.png"]];

    [composeVC addURL:[NSURL URLWithString:@"http://blog.csdn.net/Boyqicheng"]];


    //弹出分享控制器

    [self presentViewController:composeVC animated:YES completion:nil];


    //监听用户点击了取消还是发送

    composeVC.completionHandler = ^(SLComposeViewControllerResult result){

        if (result == SLComposeViewControllerResultCancelled) {

            NSLog(@"点击了取消");

        } else {

            NSLog(@"点击了发送");

        }

    };

}


原文出自 https://blog.csdn.net/goods_boy/article/details/71189821

https://blog.csdn.net/Boyqicheng/article/details/77991765  

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • 简介 在不使用第三方的情况下,采用系统原生的方法,实现分享功能。有两种方式,一种是使用UIActivityView...
    Arthur澪阅读 5,780评论 0 3
  • 今天介绍一个在程序内分享到微信好友或者朋友圈的例子。 程序内部分享方式一: 点击一个“分享”按钮,弹出一个微信分享...
    西门淋雨阅读 1,318评论 0 1
  • 今天介绍一个在程序内分享到微信好友或者朋友圈的例子。 程序内部分享方式一: 点击一个“分享”按钮,弹出一个微信分享...
    西门淋雨阅读 533评论 0 1
  • 我一男同事曾经对一晒自己健身照片的女同事留言: "健身三分钟, 拍照两小时", 夸张地道出了当下 '秀出自己' 的...
    uniapp阅读 4,036评论 1 7
  • 网络初级七期 讲师四期 分享190天 展示家庭中的关系:1、父母胸口紧靠孩子的左右肩,母亲以为是爱孩子,而孩子感到...
    熙琄细语雪阅读 215评论 0 0