iOS之OC使用原生控件实现分享到QQ、微信、短信、微博等的两种方法
来源:互联网 发布:mac泛洪攻击 编辑:程序博客网 时间:2024/06/05 15:05
现在任何一款APP都离不开“分享”,产品设计可能是觉得有分享能更好的推广自己的产品吧。。。
一种是使用UIActivityViewController, 另外一种是使用Social框架中的SLComposeViewController
一、UIActivityViewController
优缺点:
/**
优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包
缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image。
*/
这种实现相当简单,设备会检测已安装的设备,比如说手机需要安装 QQ 才能分享到QQ。否则在选择分享渠道的时候是没有未安装的APP渠道的。
直接代码:
- (void)shareBtClick{ NSString *textToShare = @"哈罗大家好,这是分享测试的内容哦,如已看请忽略!如有任何疑问可联系1008611查你话费吧!"; UIImage *imageToShare = [UIImage imageNamed:@"动态(1)@2x.png"]; NSURL *urlToShare = [NSURL URLWithString:@"http://blog.csdn.net/Boyqicheng"]; // 分享的图片不能为空 NSArray *activityItems = @[textToShare, imageToShare, urlToShare]; UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil]; // 排除(UIActivityTypeAirDrop)AirDrop 共享、(UIActivityTypePostToFacebook)Facebook activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop]; [self presentViewController:activityVC animated:YES completion:nil]; // 通过block接收结果处理 UIActivityViewControllerCompletionWithItemsHandler completionHandler = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){ if (completed) { [self showAlertViewWithMsg:@"恭喜你,分享成功!"]; }else{ [self showAlertViewWithMsg:@"很遗憾,分享失败!"]; } }; activityVC.completionWithItemsHandler = completionHandler;}
效果:
二、SLComposeViewController
优缺点:
/**
优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的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(@"点击了发送"); } };}
小结:
本文是参考“iOS社会化分享方案总结”这篇文章编写的,文章写得相当
阅读全文
1 0
- iOS之OC使用原生控件实现分享到QQ、微信、短信、微博等的两种方法
- ios微信和QQ原生分享
- 分享到QQ,微信,微博等
- Android使用系统方法实现分享到QQ和微信!
- 解决iOS app集成分享到QQ空间,微信好友,朋友圈等功能,苹果审核无法通过的问题
- ionic -- 使用cordova的插件实现分享到QQ、微博、微信
- Android中把图片分享到QQ、微信等
- 百度代码分享到QQ、微信、人人网等
- 使用Javascript 实现 分享到 新浪微博 QQ 空间等
- 使用Javascript 实现 分享到 新浪微博 QQ 空间等
- 使用Javascript 实现 分享到 新浪微博 QQ 空间等
- 使用Javascript 实现 分享到 新浪微博 QQ 空间等
- 使用Javascript 实现 分享到 新浪微博 QQ 空间等
- ios 微信分享,QQ分享,微博分享集成
- 分享到qq空间,微博等
- ios使用友盟分享到QQ/微信时时如何判断手机上是否安装了QQ以及微信的客户端
- 分享到QQ空间、微博等的代码
- iOS开发:“分享到QQ空间”的实现方法?
- BFC的理解
- LeetCode 3.Longest Substring Without Repeating Characters
- POJ 1991 Turning in Homework
- mysql级联查询
- 避免这两个常见的电子商务搜索引擎优化错误
- iOS之OC使用原生控件实现分享到QQ、微信、短信、微博等的两种方法
- 阿里云导出、导入数据注意事项
- Spark-SQL之DataFrame操作大全
- 整除
- Git 入门基础操作
- JavaScript从入门到放弃(六)
- 加性噪声和乘性噪声
- gdb for Arm
- gulp打包压缩